Java中有两种类型的迭代器:故障安全迭代器和故障快速迭代器。
这意味着什么,它们之间的区别是什么?
发布于 2013-06-29 14:45:03
它们相当于fast和weakly-consistent类型:
如果集合在迭代时被集合的方法(add / remove)修改,则来自java.util包的迭代器抛出ConcurrentModificationException
java.util.concurrent包中的迭代器通常会遍历快照并允许并发修改,但在迭代器创建后可能不会反映集合更新。
发布于 2013-06-29 14:31:13
唯一的区别是故障安全迭代器不会抛出任何异常,这与故障快速迭代器相反。
如果在一个线程迭代集合时对其进行了结构化修改。这是因为它们在克隆集合上工作,而不是在原始集合上工作,这就是为什么它们被称为故障安全迭代器。
CopyOnWriteArrayList的迭代器是故障安全迭代器的一个例子,由ConcurrentHashMap keySet编写的迭代器也是故障安全迭代器,在Java中永远不会抛出ConcurrentModificationException。
发布于 2020-05-07 01:48:16
这个场景与“并发处理”相关,意味着多个用户访问相同的资源。在这种情况下,其中一个用户试图修改导致'ConcurrentProcessingException‘资源,因为在这种情况下,其他用户得到不正确的数据。这两种类型都与这种情况有关。
简单地说,
失败-快速:
如果结构修改(添加,更新,删除) happens.
故障安全:
、CopyOnWriteArrayList
https://stackoverflow.com/questions/17377407
复制相似问题