Java Timer下次执行时间

时间:2012-02-10 09:43:19

标签: java timer

认识Janitor,一个每天凌晨3点运行的计时器。

Timer janitorTimer = new Timer();
TimerTask janitorWorker = new Janitor(); // Extending TimerTask
long delay = TimeUtils.getMillisUntilTomorrowAt( 3L * 3600000L); // Does what it says
janitorTimer.scheduleAtFixedRate( janitorWorker, delay, 24L * 3600000L);

在某个时间点我想知道下一个janitorWorker执行时间

无法在Timer或TimerTask中找到任何相关内容。 觉得某些东西应该已经知道了。

3 个答案:

答案 0 :(得分:1)

TimerTask的实施中,您可以公开nextExecutionTime,然后将其与当前时间进行比较,请参阅mainLoop中的Timer

答案 1 :(得分:0)

在尚未执行任务的情况下,方法scheduledExecutionTime未定义。但是,在我的应用程序中,一旦执行了一次执行任务,该方法实际上会在执行之前和之后返回预定时间 注意此行为是特定于设备的,未记录在案。因此,应该针对每个设备验证此方法,并且通常不建议这样做。

答案 2 :(得分:-1)

TimerTask中,存在一个名为scheduledExecutionTime()的方法。它的作用是:

  

返回最近实际的计划执行时间   执行这项任务。

参考:http://docs.oracle.com/javase/6/docs/api/java/util/TimerTask.html#scheduledExecutionTime%28%29

<强>更新

这是一种新方式。

因为它具有固定费率,您可以做的是致电scheduledExecutionTime()添加 fixedRate 值,然后推断出 nextExecutionTime