fail-fast也称快速失败,在所有集合的iterator中都有这个机制,他是在iterator中实现的。
如果理解了快速失败的原理,这会在以后的程序设计中提供一种处理多线程操作引起的冲突的解决思路。
fail-fast的原理其实很简单,就是在类中定义一个初始的整型值,然后在迭代开始的时候获得这个初始值,并在迭代的过程中每次都比较这个获得的初始值与原来定义的初始值是否相等,如果不相等就跑出异常,不相等的来源是对原集合数据的删除或者添加,又或者是结构上的修改,这里对数据的增删改修改的是原集合中定义的初始值,而迭代的时候是获得原初始值的副本。
注意:迭代只负责对数据的读取,并不会修改原来集合中的数据,出现fail-fast的原因是针对集合的直接增删改,如果是通过原集合本身获取数据并不会出现fail-fast,fail-fast只是在iterator中定义的。