【发布时间】:2023-03-16 06:23:02
【问题描述】:
我们希望每 1000 秒(比如说)运行一次任务。
所以我们有
timer.scheduleAtFixedRate(task, delay, interval);
大多数情况下,这工作正常。但是,这是一个嵌入式系统,用户可以更改实时时钟。如果他们在我们设置计时器后将其设置为过去的时间,那么计时器似乎直到原始实时日期/时间才会执行。因此,如果他们将其设置回 3 天,则计时器不会执行 3 天:(
这是允许的行为,还是 Java 库中的缺陷? Oracle javadocs 似乎没有提到任何关于系统时钟基础值的依赖关系。
如果允许,我们如何发现这个时钟变化并重新安排我们的计时器?
【问题讨论】:
-
如果你将时间提前 3 天,它会执行无限次(不完全是,但你知道我的意思)试图赶上的时间!!
标签: java clock timertask system-clock