java jdk1.5提供線程池 在java.util.concurrent包下提供工廠類Executors用于生產線程池,Executors提供了4種線程池
newFixedThreadPool: 創建一個線程池,該線程池重用固定數量的從共享無界隊列中運行的線程。
newScheduledThreadPool:創建一個根據需要創建新線程的線程池,但在可用時將重新使用以前構造的線程。
newSingleThreadExecutor:創建一個使用從無界隊列運行的單個工作線程的執行程序。支持定時及周期性任務執行。
newWorkStealingPool:創建使用所有 available processors作為其目標并行級別的工作竊取線程池。它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先級)執行。
newScheduledThreadPool 創建一個定長線程池,支持定時及周期性任務執行。類似于Timer。
?
以newSingleThreadExecutor舉例
- 創建線程池,使用Executors的靜態方法newFixedThreadPool()創建一個固定數量線程池。
- 使用lambda實現runnable接口,重寫run方法,設置線程任務
- 調用ExecutorService的submit傳遞線程任務,開啟線程,執行run方法
可以看出此時提交了三個線程任務