我使用ScheduledExecutorService
每小时使用scheduleAtFixedRate
方法向数据库提供更新。问题是它逐渐变得越来越晚 - 在长期服务中我一直在记录它,而且每天大约需要一秒钟。
我做了一个小班只是为了检查这个方面 - 当PC上没有任何事情发生时(运行WinXP)似乎工作正常,但如果事情正在发生,它会很快得到。 18:00:00.5
昨晚是第一个日志,今天早上是09:00:00.5
,然后10:00:05.9
,11:00:26.8
,12:00:45.3
,13:01:07.8
...
虽然我的例子不是最小的,但我可以附上代码。
其他人有过这种经历吗?任何想法为什么这不能正常工作?
我可以想到很多方法,但我真的很想知道为什么它不像宣传的那样有效!
谢谢,迈克
答案 0 :(得分:2)
这是正常的AFAIK。使用scheduleAtFixedRate
,如果此任务的执行时间超过其周期,则后续执行可能会延迟。话虽这么说,我建议scheduleWithFixedDelay
。这将确保以指定的延迟间隔执行任务。