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);
}
相关文章
相关标签/搜索