ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

**并发修改异常**

2021-03-15 19:03:44  阅读:122  来源: 互联网

标签:修改 元素 javaee 并发 add world 异常 次数


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

//并发修改异常
/*
我有一个集合 List<String> s = new ArrayList<>();
里面有三个元素 s.add("hello");
            s.add("world");
            s.add("he");

遍历集合,得到每一个元素,看看有没有world这个元素,如果有添加一个"javaee"元素
 */
public class E8 {
    public static void main(String[] args) {
        //1.创建集合对象
        List<String> s = new ArrayList<>();

        //2.添加值
        s.add("hello");
        s.add("world");
        s.add("he");

        //3.遍历集合,得到每一个元素,看看有没有world这个元素,如果有添加一个"javaee"元素
        /*Iterator<String> it = s.iterator();
        while(it.hasNext()){
           String t = it.next();
           if(t.equals("world")){
               s.add("javaee");
           }
        }

         */
        /*
        ConcurrentModificationException
        预期修改次数与实际修改次数不同
        迭代器中的it.next()方法进行了一个操作
        来判断 预期修改次数与实际修改次数
        当执行 s.add("javaee");源码中实际修改次数加一
        而预期修改次数不变,如果预期修改次数与实际修改次数不同则会抛出异常
        总的来说:当使用迭代器的时候不要添加数据
        用另一种方法
         */

        //4.遍历集合,得到每一个元素,看看有没有world这个元素,如果有添加一个"javaee"元素
        for (int i = 0; i < s.size(); i++) {
            String name = s.get(i);
            if(name.equals("world")){
                s.add("javazz");
            }
        }

        System.out.println(s);
        //[hello, world, he, javazz]
    }
}

2021-03-15 18:55:04

标签:修改,元素,javaee,并发,add,world,异常,次数
来源: https://www.cnblogs.com/z-hou/p/14539362.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有