9
我有一个计划任务(在固定延迟执行中运行),开始是这样的:什么是重新启动ScheduledExecutorService计划任务的正确方法?
executoreService.scheduleWithFixedDelay(repeatingThread, 0, numOfSeconds, TimeUnit.SECONDS);
在周期的每一个开始,我为您在设置文件的改变,然后我要重新启动的任务。设置文件还包含间隔的长度(上述代码中的numOfSeconds
)。
目前,我使用下面的代码来重新启动任务:
executoreService.shutdownNow();
try {
while(!executoreService.awaitTermination(5, TimeUnit.SECONDS)){
logger.debug("awaiting termintation");
}
} catch (InterruptedException e) {
logger.debug("interrupted, continuing", e);
}
// initialize startup parameters
init();
// start the main scheduled timer
executoreService.scheduleWithFixedDelay(repeatingThread, 0, numOfSeconds, TimeUnit.SECONDS);
我不知道这些API调用。推荐重新启动任务的方式是什么(可能会有新的延迟)?
这是一件需要考虑的事情,但它更容易实现将覆盖设置更改的任何情况。即设置文件中的任何变化*可能*也会改变延迟。因此,不是检查延迟是否发生了变化,然后做一件事,如果不是那样的话,那么我宁愿在任何情况下重新启动。 – Ovesh 2010-02-16 10:32:30