ConcurrentModificationException 并发修改异常

package com.heima.day01;

import java.util.ArrayList;

public class Demo {
    public static void main(String[] args) {

        ArrayList<String> arrayList = new ArrayList();
        arrayList.add("a1");
        arrayList.add("a2");
        arrayList.add("a3");
        arrayList.add("a4");
        arrayList.add("a5");
        arrayList.add("a6");

        for (String s : arrayList) {
            if (s.equals("a2")) {
                arrayList.remove(s);
            }
        }
    }
}

Exception in thread "main" java.util.ConcurrentModificationException

 

原因:集合在做遍历时是不能做任何修改的,因为它无法确定删除完元素后是位移呢还是要先去自动遍历呢

 

解决:使用 CopyOnWriteArrayList

        // ArrayList<String> arrayList = new ArrayList();
        CopyOnWriteArrayList<String> arrayList = new CopyOnWriteArrayList();  // 线程安全集合类

 

posted @ 2023-07-27 13:51  青核桃啊  阅读(4)  评论(0编辑  收藏  举报