java modCount和fail-fast

Posted natian-ws

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java modCount和fail-fast相关的知识,希望对你有一定的参考价值。

在迭代遍历线程不安全的集合的时候,如ArrayList,如果其他线程修改了该集合,那么将抛出ConcurrentModificationException,这就是 fail-fast 策略。

modCount记录了集合的修改次数,在迭代器初始化过程种会将这个值赋给迭代器的expectedModCount,在迭代过程中判断modCount是否和exceptedModCount相等,如果其他线程在这过程中修改了modCount,势必modCount!=exceptedModCount。比如,删除元素:

技术图片

 

在迭代过程种删除元素的时候会验证modCount

技术图片

技术图片

 

fail-fast机制,是一种错误检测机制。它只能被用来检测错误,因为JDK并不保证fail-fast机制一定会发生

以上是关于java modCount和fail-fast的主要内容,如果未能解决你的问题,请参考以下文章

java ArrayList中modCount的作用

modCount到底是干什么的呢

LinkedList之modCount和expectedModCount

Java Concurrentmodificationexception异常原因和解决方法

面试官:HashMap 中 modCount 变量有什么作用?大部分人都理解错了。。

modCount是什么,为什么源码经常看到?