據我所知,未捕獲的線程將與當前線程一起終止。在下面的代碼中,main方法已經執行了,但是為什么沒有終止呢?public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(2); executorService.execute(() -> { while (true) { throw new RuntimeException(); } });}
1 回答

慕尼黑的夜晚無繁華
TA貢獻1864條經驗 獲得超6個贊
您的運行時異常發生在 ExecutorService 線程池中。它捕獲并吞下異常,線程繼續運行。
當至少有一個非守護線程在運行時,應用程序將繼續運行。你有 2 個正在運行(在池中)?,F在,如果在離開主線程之前調用 executorService.shutdown(),那么它將完成所有任務的運行,然后應用程序將退出。
添加回答
舉報
0/150
提交
取消