java.util.Timer SystemTime效果?

时间:2011-08-20 07:35:05

标签: java timer timertask

现在说是6点钟,我有一个Timer,并在10点钟安排TimerTask。之后,System DateTime由其他服务(例如ntp)调整到9点。我仍然希望我的TimerTask将在10点钟被解雇,但事实并非如此,Timer仍在等待接下来的4个小时并解雇我的TimerTask。在这种情况下我该怎么办?

1 个答案:

答案 0 :(得分:3)

首先,如果您的时钟超过 4小时,那么您已经处于非常糟糕的混乱状态。通常情况下,如果机器长时间没有在线,时间调整只会是几毫秒或几秒 - 或偶尔一两分钟。一种选择是在设置定时器之前通过自己的NTP呼叫来检查时间是否合理准确。

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