gpt4 book ai didi

java - 在 Java 中轮询时的 Thread.sleep 或 yield

转载 作者:行者123 更新时间:2023-12-04 04:50:47 26 4
gpt4 key购买 nike

我在 Java 中实现了一个阻塞文件锁,当我试图获取一个锁时,我有一个类似这样的代码块:

while(!fileLockIsAcquired())
{
Thread.sleep(100); //is this cool?
tryAcquireFileLock();
}

100 毫秒的值对我来说似乎过于死板,我想知道如果我使用 Thread.sleep(0),调度程序会不会更智能。或 Thread.yield() .在我看来,Yield 似乎可以更好地传达意图,但我不确定我是否完全理解 JVM 是如何解释它的。一种选择明显优于另一种吗?

该文件是通过没有阻塞锁定方法的Web服务访问的远程文件,因此我必须自己实现阻塞。

最佳答案

使用 yield 会使您的投票率更高,这可能不是您想要的。这就是为什么我认为您当前的代码是可接受的第一个解决方案。

另一方面,您可以使您的 Web 服务阻塞(推迟它的响应直到获得锁)受到超时的影响。这将是一个更可靠的解决方案,因为一旦获得锁定,您就可以快速使用react,并且轮询率适中。

关于java - 在 Java 中轮询时的 Thread.sleep 或 yield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17467851/

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