首页 > TAG信息列表 > expectedModCount
【Java笔记】以并发修改异常为例总结的出错解决办法
先来看出错代码: /*需求: 遍历已有集合 如果在集合中发现存在字符串元素“world” 则在“world”后添加元素“javaee” */ List list = new ArrayList(); //多态的形式创建接口实现类对象 list.add("helllo"); list.add("java"); list.add("world"); //生成迭代器并判断有无worldJava 错误ConcurrentModificationException思考分析
在使用list集合时,如果我们使用迭代器进行遍历,同时在遍历过程中尝试添加元素,运行后会爆出这样的错误 源码是这样的 按理说没有什么问题,为什么会报错?复制报错信息到API文档中 当不允许这样的修改时,可以通过检测到对象的并发修改的方法来抛出此异常。 某些迭代器实这道Java基础题真的有坑!我求求你,认真思考后再回答。
本文目录 一.题是什么题? 二.阿里Java开发规范。 2.1 正例代码。 2.2 反例代码。 三.层层揭秘,为什么发生异常了呢? 3.1 第一层:异常信息解读。 3.2 第二层:抛出异常的条件解读。 3.3 第三层:什么是modCount?它是干啥的?什么时候发生变化? 3.4浅析ArrayList源码:Iterator并发修改异常的底层机制
错误信息 ConcurrentModificationException异常 控制台报checkForComodification 常见于迭代器操作中 在ArrayList类中查询“checkForComodification” 在ArrayList中查找关键字,我们首先会找到Itr这个类; Itr 是ArrayList的内部类,当调用ArrayList的iterator()方法时,返回的就Java面试3
我们再系统的梳理一下fail-fast是怎么产生的。步骤如下:(01) 新建了一个ArrayList,名称为arrayList。(02) 向arrayList中添加内容。(03) 新建一个“线程a”,并在“线程a”中通过Iterator反复的读取arrayList的值。(04) 新建一个“线程b”,在“线程b”中删除arrayList中的一个“节点A”