我说现在是6点,我有一个Timer,并安排在10点有一个TimerTask。在此之后,其他服务(例如ntp)将系统DateTime调整为9点。我仍然希望我的TimerTask在10点被触发,但是它没有,Timer仍然等待接下来4个小时,然后终止我的TimerTask。在这种情况下我应该怎么做?
发布于 2011-08-20 15:44:12
首先,如果你的时钟落后了4个小时,你已经陷入了相当糟糕的境地。通常,时间调整只会是毫秒或秒-或者偶尔一分钟或两分钟,如果机器很长时间没有在线的话。一种选择是在设置计时器之前,通过进行您自己的NTP调用来检查时间是否合理准确。
另一种选择是创建一个合理地定期调用的计时器-例如每分钟或五分钟一次-它检查时间,然后可选地采取行动。它的效率稍低,但我不认为唤醒单个线程每分钟执行一次简单检查的影响会对性能产生重大影响。您应该根据您需要的计时器触发的精确度以及对性能的影响有多小来调整检查的规律性。
https://stackoverflow.com/questions/7130467
复制相似问题