ThreadPoolExecutor使用小結

2021-07-11 08:00:50 字數 502 閱讀 3933

記錄一下那幾個引數的理解,網上說了亂七八糟,詳細看參考文件,很詳細很明白,沒什麼好說的。

corepoolsize,:

maximumpoolsize,:

keepalivetime:

keepalivetime:

workqueue:

queue_blocksize

執行執行緒後,會判斷數量是否超出corepoolsize,如果沒有就會建立乙個執行緒執行,如果超出了corepoolsize並且佇列還沒有滿就會建立執行緒放到workqueue佇列裡面,因為threadpoolexecutor會優先從佇列裡面獲取任務去執行,如果佇列已經滿了就是超出了queue_blocksize,這時poolsize沒有超出maximumpoolsize,那麼就會繼續建立執行緒等待,要是繼續建立執行緒並且已經超出了maximumpoolsize,那麼就會執行緒池就會拒絕執行緒並且丟擲異常。當執行緒池的執行緒數量超出corepoolsize,如果其他執行緒的空閒時間超過keepalivetime,那麼那些執行緒將被結束。

ThreadPoolExecutor使用介紹

為了更好的使用多執行緒,jdk提供了執行緒池供開發人員使用,目的在於減少執行緒的建立和銷毀次數,以此達到執行緒的重複利用。其中threadpoolexecutor是執行緒池中最核心的乙個類,我們先簡單看一下這個類的繼承關係。其中executor是執行緒池的頂級介面,介面中只定義了乙個方法 void ...

ThreadPoolExecutor簡單介紹

在專案中如果使用發簡訊這個功能,一般會把發簡訊這個動作變成非同步的,因為大部分情況下,簡訊到底是傳送成功或者失敗,都不能影響主流程。當然像傳送mq訊息等操作也是可以封裝成非同步操作的。如果想乙個操作變成非同步的,可以直接new thread,然後在run方法中實現業務操作即可。例如 new thre...

ThreadPoolExecutor執行緒池原始碼解讀

主要變數 private volatile int corepoolsize private volatile int maximumpoolsize private volatile int poolsize 建構函式 也就是建立類的時候,需要注入引數。public threadpoolexecu...