Java并发编程之美 第五章 java并发包中并发List源码剖析
CopyOnWriteArrayList
线程安全的List,对其修改操作都是在底层的一个复制数组上进行的,使用了写时复制策略
添加元素
1 获取独占锁
2 复制array到新数组
3 添加新元素到新数组
4 使用新数组替换前数组
查找元素
1 获取array数组
2 通过下标访问
会产生弱一致性问题
修改元素
1 获取独占锁
2 获取当前数组
3 获取元素
4 判断是否一致
5 不一致,创建新数组并复制元素,修改指定元素,并设置新数组到array
6 一致,重新设置array,但内容不变
删除元素
1 获取独占锁
2 获取指定元素
3 将剩余元素复制到新数组
4 替换数组
弱一致性是指返回迭代器后,其他线程对list的增删改是不可见的

浙公网安备 33010602011771号