關於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()執行的時候拋出異常,從而避免了對容器的併發操作。

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