代码改变世界

CopyOnWriteArrayList的使用和优缺点

2022-12-13 12:29  杭伟  阅读(337)  评论(0编辑  收藏  举报

CopyOnWriteArrayList允许并发读,读操作无锁,性能较高;

而写操作(含删除),比如向容器中添加/删除一个元素,则首先将当前容器复制一份,然后在新副本上执行写操作,结束之后再将原容器的引用指向新容器。

 

 

 

 可以看到,设计上使用volatile数组变量+ReentrantLock可重入锁组合。

 

优点:适用于读多写少的并发场景,另类“读写分离”思想(写时在新的副本写)应用。

缺点:内存占用;无法保证实时性。

 

*因为读写分离这个特点,故而不支持fail-fast 。或者说这个思想的应用一定不支持fail-fast。