多线程-CopyOnWriteArrayList
2016-11-13 14:21
288 查看
CopyOnWrite容器即写时复制的容器。往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器。类似的有CopyOnWriteArraySet。
CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。发生修改时候做copy,新老版本分离,保证读的高性能,适用于以读为主的情况。
public boolean add(T e) { final ReentrantLock lock = this.lock; lock.lock(); try { Object[] elements = getArray(); int len = elements.length; // 复制出新数组 Object[] newElements = Arrays.copyOf(elements, len + 1); // 把新元素添加到新数组里 newElements[len] = e; // 把原数组引用指向新数组 setArray(newElements); return true; } finally { lock.unlock(); } } final void setArray(Object[] a) { array = a; }
CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。发生修改时候做copy,新老版本分离,保证读的高性能,适用于以读为主的情况。
相关文章推荐
- Java多线程系列--【JUC集合02】- CopyOnWriteArrayList
- Java多线程-----CopyOnWriteArrayList
- Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
- JAVA 多线程随笔 (三) 多线程用到的并发容器 (ConcurrentHashMap,CopyOnWriteArrayList, CopyOnWriteArraySet)
- Java 7之多线程并发容器 - CopyOnWriteArrayList
- 多线程之-CopyOnWriteArrayList
- 多线程-CopyOnWriteArrayList
- JAVA多线程 之 CopyOnWriteArrayList和CopyOnWriteArraySet
- Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
- Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
- java多线程(10)--并发类容器 CopyOnWriteArrayList 的使用
- Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
- 【多线程】Java并发编程:并发容器之CopyOnWriteArrayList(转载)
- Java多线程 -- JUC包源码分析2 -- Copy On Write/CopyOnWriteArrayList/CopyOnWriteArraySet
- Java多线程系列--“JUC集合”02之 CopyOnWriteArrayList
- 《Java源码分析》:CopyOnWriteArrayList/ CopyOnWriteArraySet
- Java并发编程:并发容器之CopyOnWriteArrayList(转载)
- Java并发编程:并发容器之CopyOnWriteArrayList(转载)
- Java并发容器之CopyOnWriteArrayList(转载)
- CopyOnWriteArraylist解析