我们希望每1000秒运行一次任务(假设)。
因此,我们有:
大多数情况下这个功能都很好用。然而,由于这是一个嵌入式系统,用户可以改变实时钟。如果他们将时间设置为在我们设置计时器之后的过去时间,则计时器似乎要等到原始实时日期/时间才能执行。所以如果他们将时间往前调3天,计时器就不会在3天内执行 :(
这种行为是否允许或者是Java库中的缺陷?Oracle javadocs似乎没有提到是否依赖于系统时钟的基础值。
如果是允许的,我们如何发现这个时钟变化并重新安排定时器呢?
因此,我们有:
timer.scheduleAtFixedRate(task, delay, interval);
大多数情况下这个功能都很好用。然而,由于这是一个嵌入式系统,用户可以改变实时钟。如果他们将时间设置为在我们设置计时器之后的过去时间,则计时器似乎要等到原始实时日期/时间才能执行。所以如果他们将时间往前调3天,计时器就不会在3天内执行 :(
这种行为是否允许或者是Java库中的缺陷?Oracle javadocs似乎没有提到是否依赖于系统时钟的基础值。
如果是允许的,我们如何发现这个时钟变化并重新安排定时器呢?