1. 程式人生 > >小夥子,你懂執行緒池的建立嗎?

小夥子,你懂執行緒池的建立嗎?

> 為什麼阿里巴巴要禁用Executors建立執行緒池?看阿里巴巴開發手冊併發程式設計這塊有一條:執行緒池不允許使用Executors去建立,而是通過ThreadPoolExecutor的方式,通過原始碼分析禁用的原因 #### 一、執行緒池的定義 管理一組工作執行緒。通過執行緒池複用執行緒有以下幾點優點: - 減少資源建立 => 減少記憶體開銷,建立執行緒佔用記憶體 - 降低系統開銷 => 建立執行緒需要時間,會延遲處理的請求 - 提高穩定穩定性 => 避免無限建立執行緒引起的`OutOfMemoryError`【簡稱OOM】 #### 二、 Executors建立執行緒池的方式 根據返回的物件型別建立執行緒池可以分為三類: - 建立返回ThreadPoolExecutor物件 - 建立返回ScheduleThreadPoolExecutor物件 - 建立返回ForkJoinPool物件 #### 三、ThreadPoolExecutor物件 因為這些建立執行緒池的靜態方法都是返回`ThreadPoolExecutor`物件,和我們手動建立`ThreadPoolExecutor`物件的區別就是我們不需要自己傳建構函式的引數。`ThreadPoolExecutor`的建構函式共有四個,但最終呼叫的都是同一個: ```java public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, Block