gpt4 book ai didi

java - 在什么情况下,一个空的同步块(synchronized block)可以实现正确的线程语义?

转载 作者:IT老高 更新时间:2023-10-28 20:27:55 25 4
gpt4 key购买 nike

我正在查看 Findbugs报告我的代码库,并且触发的模式之一是针对空的 synchronzied block (即 synchronized (var) {})。 documentation says :

Empty synchronized blocks are far more subtle and hard to use correctly than most people recognize, and empty synchronized blocks are almost never a better solution than less contrived solutions.

在我的例子中,它的发生是因为 block 的内容已被注释掉,但 synchronized 语句仍然存在。在什么情况下,一个空的 synchronized block 可以实现正确的线程语义?

最佳答案

一个空的同步块(synchronized block)将一直等到没有其他人使用该监视器。

这可能是您想要的,但是因为您没有保护同步块(synchronized block)中的后续代码,所以没有什么可以阻止其他人在您运行后续代码时修改您正在等待的内容。这几乎不是你想要的。

关于java - 在什么情况下,一个空的同步块(synchronized block)可以实现正确的线程语义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/686415/

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