ConcurrentModificationException 及 快速失败(fail-fast)
详解:
- 快速失败:Java中Iterator(迭代器)实现原理 - wss96 - 博客园
- 迭代器使用:JAVA集合:迭代器实现原理_开始写bug~~~-CSDN博客_java迭代器原理
- 综合:Java ConcurrentModificationException异常原因和解决方法 - Matrix海子 - 博客园
报错:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at com.ruyi.base.BaseController.BaseJava.main(BaseJava.java:26)
场景:
public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);for (Integer num : list) {if(num == 1){list.remove(num);}}for (Integer i:list) {System.out.println(i);}
}
修正:
public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);Iterator<Integer> iterator = list.iterator();while (iterator.hasNext()){Integer next = iterator.next();if(2==next){iterator.remove();}}for (Integer i:list) {System.out.println(i);}
}
结果:
1
3
4
5
理解:
不可对当前循环中的父结构进行操作(增删)
迭代器的使用流程是:
- 通过hasNext判断边界,是否可以继续迭代
- 通过next() 方法返回指针指向的对象
- remove()方法移除指针指向的对象,remove之前必须先执行过next()
ConcurrentModificationException 及 快速失败(fail-fast)相关推荐
- Java - Java集合中的快速失败Fail Fast 机制
文章目录 什么是 fail-fast 源码解读 Itr 为什么对集合的结构进行修改会发生并发修改异常-源码分析 修改方法之 remove 修改方法之 add 案例分享 [案例一] [案例二] [案例三 ...
- fail safe java_Java中快速失败(fail-fast)和安全失败(fail-safe)的区别?
快速失败(fail-fast): 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exception ...
- Java - Java集合中的安全失败Fail Safe机制 (CopyOnWriteArrayList)
文章目录 Pre 概述 fail-safe的容器-CopyOnWriteArrayList add remove函数 例子 缺陷 使用场景 Pre Java - Java集合中的快速失败Fail Fa ...
- fail-fast(快速失败/报错机制)-ConcurrentModificationException
2019独角兽企业重金招聘Python工程师标准>>> 一.fail-fast机制(快速报错机制) 这是<Java编程思想>中关于快速报错机制的描述 Java容器有一种保 ...
- java.util.ConcurrentModificationException: null异常(已解决,原因出自于Java集合的快速失败机制)
问题来源 今天我在写项目时,对集合中的元素做了以下操作 报错信息如图 问题来源: 在Java中对集合进行遍历时,一旦对集合进行增删操作,在遍历时会引起java.util.ConcurrentModif ...
- 什么是Fail Fast和Fail Safe?
这里是目录标题 1. Fail Fast a. 概念 b. 原理 c. 关注点 d. 注意 2. Fail Safe a. 概念 b. 原理 3. Fail Fast 和 Fail Safe的区别 1 ...
- 咱们来聊聊快速失败和安全失败
一:快速失败(fail-fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exceptio ...
- 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?
一:快速失败(fail-fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除.修改),则会抛出Concurrent Modification Exceptio ...
- 快速失败Vs安全失败(Java迭代器附示例)
译者:java达人-卍极客 英文出处:Java Concept Of The Day 英文链接:http://javaconceptoftheday.com/(点击文末阅读原文前往) 转载请标注以上声 ...
最新文章
- MBR与GPT分区格式(实例-创建大于2TB的分区)
- NYOJ 5177 疯牛(最大化最小值 二分搜索)
- 单片机脉宽测量C语言,单片机脉宽测量的程序
- 线程间通信之eventfd
- JS-函数(调用返回值)-形参实参-作用域
- 轻松理解条件随机场(CRF)
- 颠覆游戏开发,虚幻引擎 UE5 正式发布
- 博客目录 Blog directory
- 利用网络媒体搭建自己就业之“桥”——卖糖葫芦北大毕业生谋职报道带来的启示...
- node中封装MongoDB
- 数学建模系列--灰色关联分析
- java鼠标监听事件_Java鼠标事件监听器的创建和使用教程及代码
- java 美元符号_使用单个美元符号“$”作为java类名称的任何风险?
- ant design vue 描述列表Descriptions数据绑定
- beyong经典之作
- ArcGIS校园3D展示图制作详细教程
- 第十一章 Caché 函数大全 $DATA 函数
- 加班者的王者语录(改编)
- uniapp 微信小程序实现路线规划导航
- 数据完整性、存储过程、函数
热门文章
- # 健康饮食-20211217
- NVIDIA各型号显卡算力、CUDA、CUDNN、驱动对应版本归纳
- 解决Finetune时 Aborted at 1493299396 (unix time) try date -d if you are using GNU date
- 2016.3.5 开放世界游戏进化史
- 【附源码】Java计算机毕业设计网上零食商城(程序+LW+部署)
- MongoDB文档存储
- 苹果6信号总是无服务器,苹果6信号不好怎么解决的方法介绍【图文】
- 栅格矢量化_绘科普 | 栅格网格的几何校正
- 【深度学习 理论】Convolutional Neural Network
- php密钥dse破解,88CD求个php混淆解密工具!