ThreadPoolExecutor簡單理解與使用

2021-10-02 21:53:06 字數 582 閱讀 5688

檢視threadpoolexecutor的原始碼發現,其提供了4個構造方法,如下:

其中典型使用

執行緒池會根據corepoolsize和maximumpoolsize自動地調整執行緒池大小

任務執行過程:

1. 提交新的任務時,判斷,是否達到了核心執行緒數量,如果達到,則建立乙個工作執行緒來執行任務

2. 判斷工作佇列是否已經滿了, 如果沒滿,則將新提交的任務儲存在工作佇列中

3. 判斷是否達到了執行緒最大數量,如果沒有達到, 則建立乙個新的工作執行緒來執行

4. 通過拒絕策略來處理任務

executors常用工具類:

如何確定合適數量的執行緒:

計算型任務:cpu數量的1-2倍

io型任務: 比計算型任務多一些執行緒,具體需要io阻塞時長進行考量決定,可以考慮根據需要,在乙個最小數量和最大數量間進行自動增減執行緒數

ThreadPoolExecutor的使用和介紹

1 類說明 newfixedthreadpool生成乙個固定的執行緒池,使用threadpoolexecutor 來構造,可以像tomcat的執行緒池一樣設定 最大執行緒數 最小執行緒數 和 空閒執行緒keepalive的時間 threadpoolexecutor public threadpool...

ThreadPoolExecutor簡單介紹

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

Python select模組簡單理解與使用

select 的機制中提供一fd set的資料結構,實際上是一long型別的陣列,每乙個陣列元素都能與一開啟的檔案控制代碼 不管是socket控制代碼,還是其他檔案或命名管道或裝置控制代碼 建立聯絡,建立聯絡的工作由程式設計師完成,當呼叫select 時,由核心根據io狀態修改fd set的內容,由...