标签:uil 线程 lis 有一个 element moni 并发 安全 数组
java.util.concurrent;
CopyOnWriteArrayList
是一个线程安全的ArrayList
,通过内部的volatile数组
和显式锁ReentrantLock
来实现线程安全。
CopyOnWriteArraySet
是线程安全的Set
,它是由CopyOnWriteArrayList
实现,内部持有一个CopyOnWriteArrayList
引用,所有的操作都是由CopyOnWriteArrayList
来实现的,区别就是CopyOnWriteArraySet
是无序的,并且不允许存放重复值。
/**
* The lock protecting all mutators. (We have a mild preference
* for builtin monitors over ReentrantLock when either will do.)
*/
final transient Object lock = new Object();
/** The array, accessed only via getArray/setArray. */
private transient volatile Object[] array;
/**
* Appends the specified element to the end of this list.
*/
public boolean add(E e) {
synchronized (lock) {
Object[] es = getArray();
int len = es.length;
es = Arrays.copyOf(es, len + 1);
es[len] = e;
setArray(es);
return true;
}
}
JUC 一 CopyOnWriteArrayList 和 CopyOnWriteArraySet
标签:uil 线程 lis 有一个 element moni 并发 安全 数组
原文地址:https://www.cnblogs.com/loveer/p/11409897.html