新知榜官方账号
2023-09-18 19:52:18
“fail-fast”是java集合的一种错误检测机制,当多个线程对集合进行结构上的改变的操作时,有可能会产生fail-fast机制。
举例假设存在两个线程(线程1、线程2)线程1通过Iterator在遍历集合A中的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简单的修改集合元素的内容),那么这个时候程序就会抛出ConcurrentModificationException异常,从而产生fail-fast机制。
为什么会产生并发修改异常ConcurrentModificationException?在迭代器中维护了两个变量intmodCount与intexpectedmodCount,在迭代器中,两个值默认是相等的.集合在被遍历期间如果内容发生变化,就会改变modCount的值.当使用迭代器中的next()/remove时,遍历下一个元素之前,会先调用checkForComodification进行检测在checkForComodification方法当中通过modCount与expectedModCount两个值是否相等来判断当前集合有没有被被修改过,如果修改过,就会抛出并发修改异常建议使用迭代器中的方法,在迭代器中的删除方法中,会重新设置modCount与expectedModCount的值
迭代时如何避免并发修改异常?
微信扫码咨询
相关工具
相关文章
推荐
阿里Accio中文版上线!一键搞定复杂采购
2025-08-19 09:13
视频“用嘴编辑”的时代来了,但钱包顶得住吗?
2025-08-15 17:59
智谱新模型GLM-4.5V全面开源,玩家们有福啦!
2025-08-12 17:56
扎心文案+AI插画=爆款!揭秘8万赞视频的制作全流程
2025-08-12 10:08
GPT-5没你想的那么好,附实测体验~
2025-08-11 11:07
一站式搞定AI绘图+视频,AI短片效率飙升的秘密在这儿!
2025-08-08 09:26
打工人新神器!10款国产AI,让你告别996!
2025-08-08 09:24
豆包视觉推理深度体验,AI也能“边看边想”了!
2025-08-08 09:19
300美元的AI男友来了!马斯克的情感生意从女友做到男友
2025-08-01 17:56
Agent智能体:2025年企业新员工,月薪仅需一度电?
2025-07-30 17:49