问一下 Java 里的安全失败迭代器中的失败是什么意思

2023-01-16 15:08:32 +08:00
 s1084796293
快速失败我能理解,迭代过程中,集合被其他线程修改了,会抛出异常,这叫失败。
那安全失败迭代器呢,怎么失败了,哪里失败了,不是没抛异常吗?
950 次点击
所在节点    程序员
5 条回复
hidemyself
2023-01-16 15:22:09 +08:00
fail-safe,为什么要翻译成安全失败
TWorldIsNButThis
2023-01-16 15:24:06 +08:00
@hidemyself 很正常,毕竟 out of memory 可以翻译成内存溢出
geelaw
2023-01-16 15:24:32 +08:00
搜索了一下,是神秘的奇葩翻译,fail-safe 的正译不“安全失败”,它的意思是“在非正常情况下仍然 safe”,可以译作“防失败”“防呆”“万全”“万无一失”“保险”……

根据资料,Java 集合的 fail-safe 遍历是让迭代器总是与创建时刻的集合状态关联,即被迭代集合不可变,对于可变集合的实现就是先把集合复制一次。

此外,fail-fast 更好的翻译是“尽早报错”。
iseki
2023-01-16 15:26:16 +08:00
这不应该叫“失败安全”吗
xuanbg
2023-01-16 16:35:32 +08:00
反正这个词就很奇葩,不仅仅是翻译奇葩,原文也奇葩。什么叫 fail-safe ,原意应该是指一种可控的,可预期的失败,或者,就是不会导致程序异常的失败。这个用 safe 来表述就很灵性……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/909280

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX