一 CopyOnWrite容器概述

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayListCopyOnWriteArraySet

CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器。

二 CopyOnWriteArrayList的实现原理及引申

核心就是读时候不加锁,写时候进行同步,copy容器 -> 引用变更,copyOnWriteArrayList用到底层native的System.arraycopy方法。

下面仿照源码写的MyCopyOnWriteArrayList(看起来

最新文章

  1. 供销大集-JS修改
  2. Hyper-v之利用差异磁盘快速创建多个虚拟机
  3. hdu1272 小希的迷宫
  4. IIS不能对网站添加默认文档(由于权限不足而无法写入配置文件)
  5. C# 缓存学习总结
  6. 用Stack实现对多线程的管理范例
  7. postfix疯狂外发垃圾邮件
  8. [笔记]GBDT理论知识总结
  9. Hibernate——hibernate的配置测试
  10. [译]ASP.NET Core 2.0 全局配置项
  11. spring boot高性能实现二维码扫码登录(上)——单服务器版
  12. python3学习笔记3---引用http://python3-cookbook.readthedocs.io/zh_CN/latest/
  13. 47 【golang】mysql操作
  14. J Press the Button
  15. python3之Django基础篇
  16. 转:HTML5页面如何在手机端浏览器调用相机、相册功能
  17. 题目1006:ZOJ问题(递推规律)
  18. linux scp上传文件到其他机器上
  19. 域名绑定和域名解析(DNS)有什么不同?(转载)
  20. Carte作为Windows服务

热门文章

  1. maven+SSM+junit+jetty+log4j2环境配置的最佳实践
  2. getFieldDecorator用法(二)——封装表单模块
  3. 创建jQuery节点对象
  4. elasticsearch各种服务链接
  5. JAVA基础知识|反射
  6. Elasticsearch的java客户端JEST的操作
  7. Add hyperlink to textblock wpf
  8. Linux学习:Makefile简介及模板
  9. C之自定义类型
  10. 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_6.RabbitMQ研究-入门程序-消费者