//创建集合对象
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");

Iterator it = c.iterator();
while(it.hasNext()){
    String s =  (String)it.next();
    if(s.equals("java")){
        c.add("android");//报错 并发异常
    }
}

 

迭代器是依赖于集合的,相当于集合的一个副本,当迭代器在操作的时候,如果发现和集合不一样,就会抛出异常

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

解决方案:

     在使用迭代器进行遍历的时候使用迭代器来修改,不使用集合修改

//使用List创建集合对象
    List c = new ArrayList();
    c.add("hello");
    c.add("world");
    c.add("java"):

    ListIterator lit = c.listIterator();
    while(lit.hasNext()){
        String s = (String)lit.next();
        if(s.equals("java")){
            lit.add("android");//注,此处不要用集合c添加,要用迭代对象lit添加,它就会去同步集合
        }
    }

    System.out.println(c);//[hello,world,java,android]

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄