fail-fast机制
fail-fast:它是Java集合(Collection)的一种错误机制。当多个线程对同一个集合进行修改结构操作,使用集合的迭代器iterator,会首先检测是否有对集合的并发修改,进而产生ConcurrentModificationException异常提示。
阅读ArrayList的add方法源码,可以注意到在add方法中,除了校验底层数组的容量是否需要扩充之外,恒久对modCount这个变量进行了自增操作。(除了add方法存在外,remove等几乎其他所有影响集合长度的方法都存在。)
在ArrayList的迭代器实现中,所有方法首先校验了集合的modCount和迭代器的expectedModCount(集合创建迭代器时copy自集合的modCount)是否一致,二者值不一致则表示迭代器的集合对象在创建当前迭代器后进行了修改集合结构操作,