gpt4 book ai didi

Java Thread.sleep 比预定时间早 "much"醒来

转载 作者:行者123 更新时间:2023-12-03 22:14:51 26 4
gpt4 key购买 nike

我需要编写一个守护进程来启动在不同时间唤醒的线程数。该守护进程是使用 commons apache 库用 Java 编写的,并在 Linux 机器 (Fedora 13) 上运行。一个线程每天醒来执行按计划发生的任务 A。但是还有另一个线程计划在每周一早上 6 点醒来,以执行一些没有按计划发生的任务。问题是这个线程在实际预定时间之前就醒来了。它在上一次运行完成后运行 2 天,尽管它应该只在一周后运行。等待时间是使用我们自己的计时器类正确计算的,因为它重用了现有代码,所以我看不出这有什么问题。

这可能是什么问题?

谢谢

最佳答案

Thread.sleep() 不作任何保证,它可能比预期更早醒来。你应该总是在循环中使用它:

long curTime = System.currentTimeMillis();

while (wakeUpTime - curTime > 0) {
try {
Thread.sleep(wakeUpTime - curTime);
} catch (InterruptedException ex) { }
curTime = System.currentTimeMillis();
}

关于Java Thread.sleep 比预定时间早 "much"醒来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5045420/

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