Fail-Fast:Java集合错误检测机制

一、简介
fail-fast,即快速失败,Java集合的一种错误检测机制。当多个线程对集合(非fail-fast的集合类)进行结构上的改变的操作时有可能会抛出ConcurrentModificationException(当方法检测到对象的并发修改,但不允许这种修改,单线程也会)

二、示例
在Foreach循环中删除元素时发生该错误。
原因

集合中的modCount与集合的iterator中的expectedModCount不相等。
当一次集合中的元素时modCount值改变但是expectedModCount的值没更新。
(foreach循环实际上在编译时会被转换成为while和iterator的操作)

解决方法
1、直接使用普通的for循环:没有遇到iterator的遍历,不执行fail-fast
的检验
2、使用Iterator进行操作:更新集合中的modCount的同时又更新了iterator的expectedModCount的值。
3、使用java8中提供的filter过滤

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容