1. 程式人生 > >六、執行緒池(一)

六、執行緒池(一)

### 執行緒池 通過建立池可以有效的利用系統資源,節約系統性能。Java 中的執行緒池就是一種非常好的實現,從 JDK1.5 開始 Java 提供了一個執行緒工廠 Executors 用來生成執行緒池,通過 Executors 可以方便的生成不同型別的執行緒池。 ### 執行緒池的優點 - 降低資源消耗。執行緒的開啟和銷燬會消耗資源,通過重複利用已建立的執行緒降低執行緒建立和銷燬造成的消耗。 - 提高響應速度。當任務到達時,任務可以不需要的等到執行緒建立就能立即執行。 - 提高執行緒的可管理性。執行緒是稀缺資源,如果無限制的建立,不僅會消耗系統資源,還會降低系統的穩定性,使用執行緒池可以進行統一的分配,調優和監控。 ### 常見的執行緒池 - CachedThreadPool:可快取的執行緒池,該執行緒池中沒有核心執行緒,非核心執行緒的數量為 Integer.max_value,就是無限大,當有需要時建立執行緒來執行任務,沒有需要時回收執行緒,適用於耗時少,任務量大的情況。 - SecudleThreadPool:週期性執行任務的執行緒池,按照某種特定的計劃執行執行緒中的任務,有核心執行緒,但也有非核心執行緒,非核心執行緒的大小也為無限大。適用於執行週期性的任務。 - SingleThreadPool:只有一條執行緒來執行任務,適用於有順序的任務的應用場景。 - FixedThreadPool:定長的執行緒池,有核心執行緒,核心執行緒的即為最大的執行緒數量,沒有非核心執行緒 - Executors.newFixedThreadPool()、Executors.newSingleThreadExecutor() 和 Executors.newCachedThreadPool() 等方法的底層都是通過 ThreadPoolExecutor 實現的。 ### ThreadPoolExecutor ````java public ThreadPoolExecutor(int corePoolSize,                           int maximumPoolSize,                           long keepAliveTime,                           TimeUnit unit,                           Block