V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
s1084796293
V2EX  ›  程序员

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

  •  
  •   s1084796293 · 2023-01-16 15:08:32 +08:00 · 1106 次点击
    这是一个创建于 679 天前的主题,其中的信息可能已经有所发展或是发生改变。
    快速失败我能理解,迭代过程中,集合被其他线程修改了,会抛出异常,这叫失败。
    那安全失败迭代器呢,怎么失败了,哪里失败了,不是没抛异常吗?
    5 条回复    2023-01-16 16:35:32 +08:00
    hidemyself
        1
    hidemyself  
       2023-01-16 15:22:09 +08:00
    fail-safe,为什么要翻译成安全失败
    TWorldIsNButThis
        2
    TWorldIsNButThis  
       2023-01-16 15:24:06 +08:00
    @hidemyself 很正常,毕竟 out of memory 可以翻译成内存溢出
    geelaw
        3
    geelaw  
       2023-01-16 15:24:32 +08:00 via iPhone
    搜索了一下,是神秘的奇葩翻译,fail-safe 的正译不“安全失败”,它的意思是“在非正常情况下仍然 safe”,可以译作“防失败”“防呆”“万全”“万无一失”“保险”……

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

    此外,fail-fast 更好的翻译是“尽早报错”。
    iseki
        4
    iseki  
       2023-01-16 15:26:16 +08:00
    这不应该叫“失败安全”吗
    xuanbg
        5
    xuanbg  
       2023-01-16 16:35:32 +08:00
    反正这个词就很奇葩,不仅仅是翻译奇葩,原文也奇葩。什么叫 fail-safe ,原意应该是指一种可控的,可预期的失败,或者,就是不会导致程序异常的失败。这个用 safe 来表述就很灵性……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2921 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 15:00 · PVG 23:00 · LAX 07:00 · JFK 10:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.