ThreadPoolExecutor线程池,shutdown和shutdownNow关闭线程池方式对比,以及确保线程池能够彻底关闭的一种方式
生活随笔
收集整理的這篇文章主要介紹了
ThreadPoolExecutor线程池,shutdown和shutdownNow关闭线程池方式对比,以及确保线程池能够彻底关闭的一种方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. ThreadPoolExecutor線程池
1.1 創建線程池,構造方法的幾個參數說明及創建如下。
?
1.2 shutdown方式關閉線程池
a. 空閑且能interrupt表示該線程處于阻塞等待狀態,不包括工作中的阻塞狀態,比如Thread.sleep()就不包括;b. 當前正在工作的,會在后期獲取任務時根據線程池的狀態調用processWorkerExit方法銷毀線程。
?
1.3 shutdownNow方式強制關閉線程池
所有可被interrupt的線程既包括空閑處于阻塞等待的線程,還包括正在工作中,但能被interrupt打斷的線程。
?
1.4 確保線程池中所有線程被關閉
1.3節中的shutdownNow方式只能強制關閉能被interrupt的線程,對于某些不會發生InterruptedException的線程來說,是無法關閉線程池的。所以此時,我們可以在創建線程池時設置線程工廠中創建的線程是后臺線程(默認的線程工廠創建的線程默認不是后臺線程),這樣主線程執行結束,那么線程池也就結束了。
總結
以上是生活随笔為你收集整理的ThreadPoolExecutor线程池,shutdown和shutdownNow关闭线程池方式对比,以及确保线程池能够彻底关闭的一种方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类加载的三个阶段——加载、链接以及初始化
- 下一篇: Executors框架——5种常用的线程