我有一个运行时间很长的任务,它定期轮询web服务中的XML内容。我正在为这些定期运行使用Scheduled执行器,一切都很好。
ScheduledExecutiorService scheduleAtFixedRate的JavaDoc声明
- 。。。如果任务的任何执行遇到异常,则会抑制后续执行*
这清楚地意味着,在出现未处理的异常的情况下,应用程序即使在运行,实际上也处于停止状态,什么也不做
我想确保任务执行不会停止,除了捕捉所有异常,还有其他方法可以处理吗?
@Override
public void run() {
try {
// fetch xml feed from network,
// parse the feed and dump to file the json.
} catch (Exception e) {
logger.error("Unhandled exception " + e);}
}
}
我认为除了在run方法中捕获所有异常之外,没有其他方法。如果你不介意使用第三方库,你可以使用Quartz。看看这里。
hth