java基礎語法分析與探索:[1]執行緒池

來源:酷知科普網 1.37W

操作方法

(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張
熱門標籤