Java中的迭代器是快速失败的。如果迭代器的值在迭代过程中发生更改,则会抛出异常。
这纯粹是为了安全吗?我确信,在某些情况下,值是否发生变化并不重要。例如,假设您每隔10秒向迭代器中的成员发送一次非关键警报--为什么要关心内容是否更改?
此外,fail-fast实现只检查计数。这是有缺陷的,如果另一个线程添加和删除的计数将是相同的,即使迭代器的内容发生了变化。使用版本号不是更好吗?
发布于 2015-02-09 20:34:38
快速失败行为纯粹是为了帮助调试。一般规则是,如果在通过迭代器成员以外的其他方式迭代集合时修改集合,则迭代器的行为不再是可预测的。它将在尽力而为的基础上抛出异常。
因此,任何昂贵的跟踪方法都不是一个好主意。
https://stackoverflow.com/questions/28409833
复制相似问题