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

慕尼黑的夜晚無繁華
TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
您的運(yùn)行時(shí)異常發(fā)生在 ExecutorService 線程池中。它捕獲并吞下異常,線程繼續(xù)運(yùn)行。
當(dāng)至少有一個(gè)非守護(hù)線程在運(yùn)行時(shí),應(yīng)用程序?qū)⒗^續(xù)運(yùn)行。你有 2 個(gè)正在運(yùn)行(在池中)?,F(xiàn)在,如果在離開主線程之前調(diào)用 executorService.shutdown(),那么它將完成所有任務(wù)的運(yùn)行,然后應(yīng)用程序?qū)⑼顺觥?/p>
添加回答
舉報(bào)
0/150
提交
取消