One minute
CopyOnWriteArrayList
使用场景
适用于读操作远远多于写操作的场景。也是线程安全的一个并发容器。 CopyOnWriteArrayList就是读操作不加锁,只有写操作加锁,而且写操作也不会阻塞读操作,只有写写才会阻塞。
实现原理
CopyOnWriteArrayList的所有可变操作(add,set)并不是在原有的数组上进行修改,而是通过创建底层数组的副本,然后将新元素插入到副本中,然后在用副本将原来的数组替换掉。这样就可以保证写操作不会阻塞到读取操作了。
CopyOnWriteArrayList读取操作
读取操作是不加锁的,原因就是底层数组不会发生修改,只会被另一个数组进行替换,所以可以保证数据安全。
CopyOnWriteArrayList的写操作
写操作是加锁的,保证了同步,防止了多个线程同时Copy出来多个数组副本。
Read other posts