我们希望每 1000 秒运行一次任务(比如说)。
所以我们有
timer.scheduleAtFixedRate(task, delay, interval);
大多数情况下,这工作正常。但是,这是一个嵌入式系统,用户可以更改实时时钟。如果他们在我们设置计时器后将其设置为过去的时间,那么计时器似乎直到原始实时日期/时间才会执行。因此,如果他们将其设置回 3 天,则计时器不会执行 3 天:(
这是允许的行为,还是 Java 库中的缺陷?Oracle javadocs 似乎没有提到任何关于系统时钟基础值的依赖关系。
如果允许,我们如何发现这个时钟变化并重新安排我们的计时器?