简介
线程安全的List,使用Java锁和数组副本实现并发的控制。字面上意思 写时拷贝:当往集合写数据时拷贝一个新的副本进行写,过后替换原来的数组,这个过程为同步操作。总体就是:同步写,并发读,读写分离。
类图
继承体系与ArrayList大致相同
属性
lock
array
array
a
array a
构造方法
c
elements
c
elements c
elements c
elements
elements elements elementslength
elements
toCopyIn
toCopyIn toCopyInlength
写 add、set
e lock lock
lock
elements
len elementslength
newElements elements len
newElementslen e
newElements
lock
index element
lock lock
lock
elements
oldValue elements index
oldValue element
len elementslength
newElements elements len
newElementsindex element
newElements
elements
oldValue
lock
读 get
a index
aindex
index
index
遍历
snapshot
cursor
elements initialCursor
cursor initialCursor
snapshot elements
cursor snapshotlength
cursor
snapshotcursor
snapshotcursor
cursor
cursor
* 遍历时只允许读,不支持修改
e
e
action
action
elements snapshot
size elementslength
i cursor i size i
e elementsi
actione
cursor size
总结
核心思想,写时复制,读写分离,适合读远多于写的场景
写时复制:写的时候拷贝一个新的副本,性能不高
读写分离:读可以并发读,写时需要同步
还没有评论,来说两句吧...