Java_多線程之shutdownNow()的小問題

關於shutdown和shutdownNow區別在這https://blog.csdn.net/lq_91/article/details/81294767

這裏只是說一下shutdownNow()的問題;

調用 Executor 的 shutdown() 方法會等待線程都執行完畢之後再關閉,但是如果調用的是 shutdownNow() 方法,則相當於調用每個線程的 interrupt() 方法。

注意紅字的話,其實調用了shutdownNow方法後。系統會對線程池裏所有的線程執行interrupt方法所以對於interrupt 如何中斷線程和這個是一樣的,

    所以,當某一線程調用了sleep後,執行shutdownNow()只是打斷了該線程的sleep,該線程會退出sleep,並拋出異常,而不是結束線程; 如果catch中有對異常處理,則繼續處理異常並繼續往下執行。(若想直接中斷線程,可以把拋異常catch放在循環外面)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章