[英]No stack trace is printed when ScheduledExecutorService's task throws an exception
[英]How do i get ScheduledExecutorService to keep executing other subsequent tasks when one task throws an exception
我有一個執行器,每5秒執行一次任務
public class ScheduledTaskExecutor {
public int execute(){
ScheduledExecutorService executor = Executors.newScheduledThreadPool(4);
executor.scheduleAtFixedRate(new Task().run,3,5, TimeUnit.SECONDS);
return -1;
}
}
這是任務。 如果X == 4
我拋出IllegalArgumentException
public class Task {
private static final Logger LOG = LoggerFactory.getLogger(DcEmailTask.class);
private int x = 0;
public Runnable run = () -> {
String currentThread = Thread.currentThread().getName();
x++;
System.out.println("Thread [" + currentThread + "] is executing the task: " + x);
if (x == 4) throw new IllegalArgumentException();
};
}
程序停止執行,並且不打印堆棧跟蹤。
此行為是根據ScheduledExecutorService#scheduleAtFixedRate.
的javadoc進行的ScheduledExecutorService#scheduleAtFixedRate.
解決該問題的一種方法是捕獲可運行的所有異常。
這個答案有更多詳細信息https://stackoverflow.com/a/24902026/3002471
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.