JUC之CopyOnArrayList

62 阅读1分钟

1.什么是CopyOnArrayList

多线程安全的集合,写操作(add/remove/set方法)加锁,读(get方法)不加锁,适用于读多写少的场景

2.CopyOnArrayList原理

在jdk1.8中,写操作上加了可重入锁,并将原数组进行拷贝,在新的数组上操作

3.CopyOnArrayList为什么要在写操作上加锁

为了防止并发写时产生多个副本,从而导致结果异常

4.CopyOnArrayList为什么要在读操作上不加锁

为了提升读的性能

5.CopyOnArrayList在读操作上不加锁会出现什么问题

其他线程在写的时候,可能读取到旧值

6.附add、revome、set、get源码

image.png

image.png

image.png

image.png