gpt4 book ai didi

java - Java 保护 block 中的 "Huge bug"

转载 作者:行者123 更新时间:2023-12-02 03:08:23 24 4
gpt4 key购买 nike

IBM教程5 things you didn't know about ... java.util.concurrent, Part 1指出Java tutorial Guarded blocks示例包含一个“巨大的错误”,但没有具体说明:

Bug watch!

By the way, you're right if you noticed that Guarded Blocks contains a huge bug — what would happen if a developer synchronized on the Drop instance inside of main()?

谁是对的?

如果 Java 教程中已修复该错误,则该错误发生在 2010 年 5 月至 2011 年 11 月之间,因为 WebArchive 中的代码看起来相似.

最佳答案

上面的答案(Artur 和 Gedrox)是正确的——在放置对象本身上进行同步违反了封装,因为任何人(从外部)也可以获取该监视器,从而完全破坏信号机制。

我已经有一段时间没有看过 Java 教程代码了,但我记得在写这篇文章时看过它。如果他们修复了它,那是在我查看之后。

至于这是否是一个“巨大的bug”,我坚持这样的说法;任何可能破坏同步方案的事情都应该避免,因为追踪这个问题需要对 Java 同步系统有非常高的熟练程度、始终导致死锁的代码路径,以及对所有可能的排列的良好熟悉,以便人们可以在调试环境之外对其进行推理。这并不是成功的秘诀。

关于java - Java 保护 block 中的 "Huge bug",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41425383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com