快速失败迭代器会在意识到集合的结构在迭代开始后发生变化时立即失败。结构性变化指的是在一个线程正在迭代该集合时,添加、删除或更新集合中的任何元素。
但是它是如何知道这种变化的呢?
http://docs.oracle.com/javase/7/docs/api/java/util/ConcurrentModificationException.html
请注意,故障快速行为无法保证,因为通常情况下,在存在未同步的并发修改时无法做出任何硬性保证。故障快速操作尽最大努力抛出ConcurrentModificationException异常。因此,编写依赖于此异常正确性的程序是错误的:应仅使用ConcurrentModificationException检测错误。