ArrayList線程不安全三種解決情況

在多線程高併發的情況下arrayList會拋出concurrentModificationException

解決情況

1.vector
2. Collections.synchronizedList(new ArrayList<>());
3. 用JUC包下的CopyOnWriteArrayList
源碼分析

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

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章