rcs*_*rcs 2 java multithreading
我需要编写一个守护进程,它启动在不同时间唤醒的线程数.守护进程使用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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1788 次 |
| 最近记录: |