为什么迭代器会快速失败并且它们真的快速失败?

时间:2015-02-09 12:28:20

标签: java iterator fail-fast

Java中的迭代器是快速失败的。如果迭代器值在迭代时发生更改,则会引发异常。

这纯粹是安全的吗?我确信在某些情况下,如果价值观发生变化则无所谓。例如,假设您每隔10秒向迭代器中的成员发送非严重警报 - 为什么您会关注内容是否已更改?

此外,快速失败的实现只会检查计数。这是有缺陷的,以防另一个线程添加和删除计数将是相同的,即使迭代器的内容被更改。使用版本号会不会更好?

1 个答案:

答案 0 :(得分:1)

快速失败的行为纯粹是为了帮助调试。一般规则是,如果在通过除迭代器成员之外的某些方法对其进行迭代时修改集合,则迭代器的行为将不再可预测。它将尽最大努力抛出异常。

因此,任何昂贵的跟踪方法都是一个坏主意。