Java-多线程并发之List源码剖析

CopyOnWriteArrayList:

是一个线程安全的ArrayList,对其的修改操作都是在底层的一个复制数组上进行的,也就是写时复制策略。

成员变量:

Object数组

独占锁

方法:

add

set

size

isEmpty

remove

iterator

 

通过写时复制的方法来保证一致性。获取-修改-写入的三步不是原子性操作。所以使用了独占锁来保证一致性。

CopyOnWriteArrayList的迭代器是弱一致性迭代器。获取迭代器后,其他线程对list的修改迭代器是不可见的状态,所以迭代器遍历的数组实际上是一个快照。snapshot 。

posted @ 2021-04-06 20:02  NobodyHero  阅读(103)  评论(0编辑  收藏  举报