爲什麼我們在這個例子中看不到堆棧跟蹤?爲什麼ScheduledExecutorService不打印堆棧跟蹤?
public class NoStackTraceTester implements Runnable {
private static final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
private ScheduledFuture<?> lifeCheckFuture;
@Override
public void run() {
lifeCheckFuture = startLifecheck();
}
private ScheduledFuture<?> startLifecheck()
{
Runnable lifeCheck = new Runnable()
{
@Override
public void run()
{
System.out.println("sending lifecheck ...");
throw new RuntimeException("bang!");
}
};
return scheduler.scheduleAtFixedRate(lifeCheck, 1000, 1000, TimeUnit.MILLISECONDS);
}
public static void main(String[] args) {
new NoStackTraceTester().run();
}
}
如果您嘗試評論該異常,則您將執行lifecheck函數的重複任務。 但是,如果有異常拋出,線程停止,但沒有詳細:(
你有一個想法,爲什麼?
它只發生在計劃的執行器服務中嗎?您是否嘗試將任務提交給單線程執行程序? –