Iterator的fail fast機制的源碼剖析

 

modCount就是用來實現fail fast機制的,各個集合裏面其實都有這個modCount的概念,只要這個集合被修改了(包括add、remove、set),那麼就會對modCount++(modificationCount)

比如說在迭代一個ArrayList之前,已經插入了4個元素,此時modCount = 4,在你獲取和初始化一個迭代器的時候,裏面的expectedModCount就會被初始化爲modCount。

在用迭代器迭代過程中,next()迭代到下一個元素時,會先進行checkForComodification(),比較expectedModCount和modCount的大小。如果大小不一樣,會 throw new ConcurrentModificationException();,併發修改衝突異常,產生fail fast事件。

java集合包下的類,都是非線程安全的,所以說針對併發修改集合的問題,用了fail fast機制。

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