Java并发编程-CopyOnWriteArrayList

CopyOnWriteArrayList原理

首先每次写操作,都将数组copy一份,并赋值给arrays

读操作读不加锁

写操作加锁

ReentrantLock

因为每次写都要copy数组,这是一项繁重的操作,因此

CopyOnWriteArrayList适合读多写少的情况。

add方法的源码如下:

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();
    }
    }

 

参考文章:

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。