首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么迭代器失败得很快,它们真的失败得很快吗?

为什么迭代器失败得很快,它们真的失败得很快吗?
EN

Stack Overflow用户
提问于 2015-02-09 20:28:20
回答 1查看 77关注 0票数 0

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

这纯粹是为了安全吗?我确信,在某些情况下,值是否发生变化并不重要。例如,假设您每隔10秒向迭代器中的成员发送一次非关键警报--为什么要关心内容是否更改?

此外,fail-fast实现只检查计数。这是有缺陷的,如果另一个线程添加和删除的计数将是相同的,即使迭代器的内容发生了变化。使用版本号不是更好吗?

EN

回答 1

Stack Overflow用户

发布于 2015-02-09 20:34:38

快速失败行为纯粹是为了帮助调试。一般规则是,如果在通过迭代器成员以外的其他方式迭代集合时修改集合,则迭代器的行为不再是可预测的。它将在尽力而为的基础上抛出异常。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28409833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档