java ScheduledExecutorService(定时任务) 运行异常

540 阅读1分钟

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() 不进行异常捕捉,那么只要出现一次异常,后续的任务都会终止运行。