scheduleAtFixedRate慢/晚

时间:2011-07-27 12:51:20

标签: java timing executorservice

我使用ScheduledExecutorService每小时使用scheduleAtFixedRate方法向数据库提供更新。问题是它逐渐变得越来越晚 - 在长期服务中我一直在记录它,而且每天大约需要一秒钟。

我做了一个小班只是为了检查这个方面 - 当PC上没有任何事情发生时(运行WinXP)似乎工作正常,但如果事情正在发生,它会很快得到。 18:00:00.5昨晚是第一个日志,今天早上是09:00:00.5,然后10:00:05.911:00:26.812:00:45.313:01:07.8 ...

虽然我的例子不是最小的,但我可以附上代码。

其他人有过这种经历吗?任何想法为什么这不能正常工作?

我可以想到很多方法,但我真的很想知道为什么它不像宣传的那样有效!

谢谢,迈克

1 个答案:

答案 0 :(得分:2)

这是正常的AFAIK。使用scheduleAtFixedRate,如果此任务的执行时间超过其周期,则后续执行可能会延迟。话虽这么说,我建议scheduleWithFixedDelay。这将确保以指定的延迟间隔执行任务。