写时复制
CopyOnWrite容器:当往容器里面添加元素的时候,不直接向容器的Object[]里面添加,而是先将当前的数组进行复制,复制出一个新的数组 Object[] newElements,然后往新的数组中的最后一位添加元素.添加完以后要将原来指向数组的引用指向新的数组,通过setArray(newElements)完成.这样做的好处就是可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何的元素.所以说CopyOnWrite是一种读写分离的思想.
三种集合对应的高并发类
List-> CopyOnWriteArrayList
Set -> CopyOnWriteArraySet
Map -> ConcurrentHashMap
下面是add方法的源码,其实对应的就是上述的过程:

留言