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的增删改是不可见的

 

  

posted @ 2019-07-22 17:50  褐色键盘  阅读(210)  评论(0)    收藏  举报