【发布时间】:2020-12-23 15:44:20
【问题描述】:
我有一个定期运行的 timerTask,但有时它会卡住(不会失败或给出任何异常)。
因此,该任务的下一次迭代不会开始,因为前一次被卡住了。
我希望任务:
- 一段时间后超时(以便可以开始下一次迭代)。
- 或者即使上一个正在运行,也要开始下一个迭代,这会强制取消任何以前正在运行的任务。
下面是我的代码:
private static Timer timer = new Timer();
private static TimerTask timerTask = new TimerTask() {
@Override
public void run() {
try{
aSeparateMethodWhichGetsStuckOccasionally();
}catch (Exception exception){
logger.info(">>> Exception : " + exception);
}
}
};
public static void scheduleTask() {
initialDelay = 600000;
gap = 600000;
timer.scheduleAtFixedRate(timerTask, initialDelay, gap);
}
【问题讨论】:
-
如果您深入了解您的任务卡住的原因并解决它们,而不是在其中堆积更多的东西可能会卡住,这不是更好吗?
标签: java multithreading timer scheduling timertask