酷知百科網

位置:首頁 > 職場理財 > 職場就業

java基礎語法分析與探索:[1]線程池

操作方法

(01)概要:線程池的創建,本質是獲取得到ThreadPoolExcutor(此處翻譯成線程池)。獲取線程池的方式有兩種,一種是自己new一個;而另外一種由獲取一個。第一種方式,需要自己對線程池進行配置,而第二種方式,返回一個默認的線程池。線程池創建的相關類圖如下:new ThreadPoolExecutor方法創建線程池及其用法第一種方式:ThreadPoolExecutor方法創建線程池及其用法第二種方式:Executors獲取線程池:首先看Executor類中主要有哪些方法可以獲取得到ThreadPoolExcutor,如下圖:Java透過Executors提供四種線程池,分別爲:

java基礎語法分析與探索:[1]線程池
java基礎語法分析與探索:[1]線程池 第2張
java基礎語法分析與探索:[1]線程池 第3張

(02)newCachedThreadPool創建一個可快取線程池,如果線程池長度超過處理需要,可靈活回收空閒線程,若無可回收,則新建線程。

(03)newFixedThreadPool創建一個定長線程池,可控制線程最大併發數,超出的線程會在隊列中等待。

(04)newScheduledThreadPool創建一個定長線程池,支援定時及週期性任務執行。

(05)newSingleThreadExecutor創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有任務按照指定順序(FIFO, LIFO,優先級)執行。

(06)線程池實現的底層機制上圖來源於網站,解釋部分是自己根據API進行總結。第1步:PoolSize指的是當前的任務數量。CorePoolSize指的是線程池可以存活着的線程數量。當任務線程數量小於線程池中存活着的線程數量,則直接執行,不用將任務存於阻塞隊列中。第2步:噹噹前的任務數量PoolSize>CorePoolSize,則將多餘的線程任務放到阻塞隊列中。第3步:當第2步不斷的累積線程任務到隊列無法存的時候,將會創建新的線程到線程池中第4步:當第3步不斷創建線程,直到線程池的最大容量(MaximumPoolSize)的時候,任務線程數量還是不斷增加,則有RejectedExecutionHandler來進行處理。

java基礎語法分析與探索:[1]線程池 第4張