关于Collection的ConcurrentModificationException

关于Collection的ConcurrentModificationException

在使用Java迭代器的时候,执行next()方法调用一个名为checkForComodification()的方法,简单看一下方法的具体实现代码

final void checkForComodification() {
	if (modCount != expectedModCount)
		throw new ConcurrentModificationException();
}

modCount 表示collection中数据变更操作的次数
expectedModCount 期待的容器变更次数,操作迭代器的过程中期待的是不会出现并发操作,因此理想的条件是modCount == expectedModCount

在初始迭代器的时候从Collection中modCount拷贝到expectedModCount,在迭代器执行的时候,如果Collection中元素出现并发变更操作,就会导致expectedModCount与modCount不一致并在next()执行的时候抛出异常,从而避免了对容器的并发操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章