3

说现在是6点,我已经Timer预定了TimerTask10点。之后,系统日期时间由其他服务(例如 ntp)调整为 9 点。我仍然希望我的TimerTask将在 10 点被解雇,但它没有,Timer仍然等待接下来的 4 小时并解雇我的TimerTask. 在这种情况下我该怎么办?

4

1 回答 1

3

首先,如果你的时钟已经过了4 小时,你就已经陷入了非常糟糕的混乱之中。通常时间调整只会以毫秒或秒为单位 - 或者偶尔一两分钟,如果机器很长时间没有在线的话。一种选择是在设置计时器之前通过自己的 NTP 调用来检查时间是否相当准确。

另一种选择是制作一个合理定期调用的计时器 - 例如每分钟或每五分钟一次 - 它检查时间然后选择性地采取行动。它的效率略低,但我不认为唤醒单个线程以每分钟执行一次简单检查的影响会对性能产生重大影响。您应该根据您需要计时器触发的准确程度以及您需要它对性能的影响有多大来调整检查的规律性。

于 2011-08-20T07:44:11.667 回答