我有代码,我在那里安排任务使用java.util.Timer.我环顾四周,看到ExecutorService可以做同样的事情.所以这个问题,你有没有使用Timer和Timer计划任务,一个人使用另一个人的好处是什么?
还想检查是否有人使用过该ExecutorService课程并遇到了Timer为他们解决的任何问题.
我们希望每1000秒运行一次任务(比方说).
所以我们有
timer.scheduleAtFixedRate(task, delay, interval);
Run Code Online (Sandbox Code Playgroud)
大多数情况下,这很好.但是,这是一个嵌入式系统,用户可以更改实时时钟.如果他们在我们设置定时器之后将其设置为过去的时间,则计时器似乎直到原始实时日期/时间才执行.因此,如果他们将其设置为3天,则计时器不会执行3天:(
这是允许的行为,还是Java库中的缺陷?Oracle javadoc似乎没有提及有关依赖性的任何信息,也没有提及系统时钟的基础值.
如果允许的话,我们如何发现这个时钟变化并重新安排我们的计时器?