gpt4 book ai didi

java - 我如何保证 Thread.sleep 至少 hibernate 那么长的时间?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:16:09 25 4
gpt4 key购买 nike

根据 this question , Thread.sleep 不一定保证在您指定的时间内 hibernate :它可能更短更长。

如果您阅读 Thread.sleep 的文档,您会发现对于 sleep 的确切持续时间没有强有力的保证。它特别指出持续时间是

subject to the precision and accuracy of system timers and schedulers

这(有意)含糊但暗示不应过分依赖持续时间。

特定操作系统上可能的 hibernate 持续时间的粒度由线程调度程序的中断周期决定。

In Windows, the scheduler's interrupt period is normally around 10 or 15 milliseconds (which I believe is dictated by the processor), but a higher period can be requested in software and the Hotspot JVM does so when it deems necessary

Source , 强调我的

我如何才能切实保证 sleep 持续时间至少达到我指定的值?

最佳答案

最实用的解决方案是计时 sleep 并在剩余时间继续 sleep :

public void sleepAtLeast(long millis) throws InterruptedException
{
long t0 = System.currentTimeMillis();
long millisLeft = millis;
while (millisLeft > 0) {
Thread.sleep(millisLeft);
long t1 = System.currentTimeMillis();
millisLeft = millis - (t1 - t0);
}
}

代码和信息来自here

关于java - 我如何保证 Thread.sleep 至少 hibernate 那么长的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45420662/

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