fail-fast 快速失败机制(modcount、ConcurrentModificationException )
相信同学们对 ConcurrentModificationException 很熟悉了,翻译过来就是并行修改异常,这个的原理是什么呢?
我们都知道HashMap 是线程不安全的,我们看下他的源码,重点关注
线程在每次新增或删除时、modcount都会记录次数;这里请注意,修改时不会。
如果集合被多个线程修改,导致 expectedModCount 与 modCount 不相同,则会抛出异常,这就是fail-fast 快速失败机制,防止继续执行造成的性能损耗。
由此我们也可以得出一个结论:凡是 集合中存在 modCount 变量,说明集合为线程不安全。