首页 > 其他 > 详细

CopyOnWriteArrayList 写时复制思想

时间:2020-04-20 17:02:40      阅读:55      评论:0      收藏:0      [点我收藏+]

写时复制

conpyOnWrite容器即写时复制容器.往一个容器添加元素的时候,不直接往当前容器Object[]添加,而是先将当前容器Object[]进行Copy,复制出一个新的容器Object[] newElements, 然后往新的容器newElements里添加元素, 添加完元素后,再讲元容器的引用指向新的容器 setArray(newElements). 这样做的好处是可以对copyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素.所以copyOnWrite也是一种读写分离的思想,读和写不同的容器.

 1  public boolean add(E e) {
 2         final ReentrantLock lock = this.lock;
 3         lock.lock();
 4         try {
 5             Object[] elements = getArray();
 6             int len = elements.length;
 7             Object[] newElements = Arrays.copyOf(elements, len + 1);
 8             newElements[len] = e;
 9             setArray(newElements);
10             return true;
11         } finally {
12             lock.unlock();
13         }
14     }

 

CopyOnWriteArrayList 写时复制思想

原文:https://www.cnblogs.com/max-home/p/12722347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!