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 @   青核桃啊  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示