copyOnWrite容器

copyOnWrite 讀寫分離數組

//寫
public boolean add(T 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();
    }
}

final void setArray(Object[] a) {
    array = a;
}

//讀
public E get(int index) {
    return get(getArray(), index);
}
相關文章
相關標籤/搜索