java多线程-线程安全集合

  • CopyOnWriteArrayList

CopyOnWrite思想就是将原来的数据copy一份出来修改,然后把修改后的数据替换原来的数据。在setArray之前并发读到的还是旧数据,弱一致性。

    public boolean add(E e) {
        synchronized (lock) {
            Object[] es = getArray();
            int len = es.length;
            es = Arrays.copyOf(es, len + 1);//新数组长度加1
            es[len] = e;//添加元素到最后
            setArray(es);//把旧数组替换
            return true;
        }
    

 

posted @ 2022-10-30 14:40  扶不起的刘阿斗  阅读(24)  评论(0编辑  收藏  举报