Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Java 中的迭代器是快速失败的。如果迭代器值在迭代时发生变化,则会引发异常。
这纯粹是为了安全吗?我敢肯定,在某些情况下,如果值发生变化并不重要。例如,假设您每 10 秒向迭代器中的成员发送非关键警报 - 为什么要关心内容是否更改?
此外,快速失败的实现只是检查计数。这是有缺陷的,如果另一个线程添加和删除计数将是相同的,即使迭代器的内容发生了变化。使用版本号不是更好吗?
快速失败行为纯粹是为了帮助调试。一般规则是,如果您在通过迭代器成员以外的其他方式对其进行迭代时修改集合,则迭代器的行为不再是可预测的。它将尽最大努力抛出异常。
因此,任何昂贵的跟踪方法都是一个坏主意。