「java.util.concurrent并发包」之 CopyOnWrite
2024-10-06 17:34:58
一 CopyOnWrite容器概述
Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。
CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器。
二 CopyOnWriteArrayList的实现原理及引申
核心就是读时候不加锁,写时候进行同步,copy容器 -> 引用变更,copyOnWriteArrayList用到底层native的System.arraycopy方法。
下面仿照源码写的MyCopyOnWriteArrayList(看起来
最新文章
- 供销大集-JS修改
- Hyper-v之利用差异磁盘快速创建多个虚拟机
- hdu1272 小希的迷宫
- IIS不能对网站添加默认文档(由于权限不足而无法写入配置文件)
- C# 缓存学习总结
- 用Stack实现对多线程的管理范例
- postfix疯狂外发垃圾邮件
- [笔记]GBDT理论知识总结
- Hibernate——hibernate的配置测试
- [译]ASP.NET Core 2.0 全局配置项
- spring boot高性能实现二维码扫码登录(上)——单服务器版
- python3学习笔记3---引用http://python3-cookbook.readthedocs.io/zh_CN/latest/
- 47 【golang】mysql操作
- J Press the Button
- python3之Django基础篇
- 转:HTML5页面如何在手机端浏览器调用相机、相册功能
- 题目1006:ZOJ问题(递推规律)
- linux scp上传文件到其他机器上
- 域名绑定和域名解析(DNS)有什么不同?(转载)
- Carte作为Windows服务
热门文章
- maven+SSM+junit+jetty+log4j2环境配置的最佳实践
- getFieldDecorator用法(二)——封装表单模块
- 创建jQuery节点对象
- elasticsearch各种服务链接
- JAVA基础知识|反射
- Elasticsearch的java客户端JEST的操作
- Add hyperlink to textblock wpf
- Linux学习:Makefile简介及模板
- C之自定义类型
- 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_6.RabbitMQ研究-入门程序-消费者