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機制。