CopyOnWriteArrayList

1.线程安全的list:CopyOnWriteArrayList,

CopyOnWriteArrayList,顾名思义,Write的时候总是要Copy(将原来的array复制到新的array),也就是说对于CopyOnWriteArrayList,任何可变的操作(add、set、remove等等)都是通过ReentrantLock 控制并发并伴随复制这个动作。
底层实现机制:

public boolean add(E e) {
final ReentrantLock lock = this.lock;
lock.lock();
try {
    Object[] elements = getArray();
    int len = elements.length;
    Object[] newElements = Arrays.copyOf(elements, len + 1);
    newElements[len] = e;
    setArray(newElements);
    return true;
} finally {
    lock.unlock();
}
}

你可能感兴趣的:(java学习)