问题复现
public static void main(String[] args) {
ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1);
executorService.scheduleAtFixedRate(() -> {
System.out.println(1);
int i = 10 / 0;
}, 0, 1, TimeUnit.SECONDS);
}
程序就执行一次就停止了
查看方法源码
注释很明确出现异常就不执行,所以我们得捕获异常
public static void main(String[] args) {
ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1);
executorService.scheduleAtFixedRate(() -> {
try {
System.out.println(1);
int i = 10 / 0;
}catch (Exception e){
e.printStackTrace();
}
}, 0, 1, TimeUnit.SECONDS);
}
可以看到在打印异常,程序在执行