快速失败和安全失败
快速失败:指的是在迭代集合时,如果对集合进行增删时,会抛出异常ConcurrentModificationException。java.util下的集合都是快速失败
快速失败的原理:并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变 modCount 的值。每当迭代器使用 hashNext()/next() 遍历下一个元素之前,都会检测 modCount 变量是否为 expectedmodCount 值,是的话就返回遍历;否则抛出异常,终止遍历。
安全失败:指的是在迭代集合时,对集合进行增删时,不会抛出异常,java.util.concurrent下的集合都是安全失败。
安全失败的原理:由于迭代时是对原集合的拷贝进行遍历,所以在遍历过程中对原集合所作的修改并不能被迭代器检测到,所以不会触发 Concurrent Modification Exception。这页也将导致无法在当前遍历的过程中无法访问增加修改的内容。
浙公网安备 33010602011771号