java程序中,ScheduledExecutorService 定时任务运行一段时间后,会出现后续任务无法继续执行的情况,可能出现的问题是:没有捕捉异常。
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
if (sync.compareAndSet(false, true)) {
try {
//业务代码
reshUserTime();
} catch (Exception e) {
e.printStackTrace();
} finally {
sync.set(false);
}
i++;
} else {
log.error("上一次任务长在执行中,终止本次执行!");
}
}
}, 30, 30, TimeUnit.SECONDS);
以上代码中,如果对 reshUserTime() 不进行异常捕捉,那么只要出现一次异常,后续的任务都会终止运行。