threadpoolexecutor(int corepoolsize,
int maximumpoolsize,
long keepalivetime,
timeunit unit,
blockingqueueworkqueue,
threadfactory threadfactory,
rejectedexecutionhandler handler)
先來看看建構函式的引數,解釋下:
1. 如果執行的執行緒小於corepoolsize,則嘗試用給定的命令作為第乙個任務啟動乙個新執行緒。
對addworker的呼叫原子性地檢查runstate和workercount,因此可以通過返回false來防止錯誤警報,因為錯誤警報會在不應該新增執行緒的時候新增執行緒。
2. 如果乙個任務可以成功排隊,那麼我們仍然需要再次檢查是否應該新增乙個執行緒(因為自上次檢查以來已有的執行緒已經死亡),或者池在進入這個方法後關閉。
因此,我們重新檢查狀態,如果必要的話,如果停止,則回滾佇列;如果沒有,則啟動乙個新執行緒。
3. 如果無法對任務排隊,則嘗試新增新執行緒。如果它失敗了,我們知道我們被關閉或飽和,所以拒絕任務。
執行緒池學習
執行緒池的基本原理 在傳統伺服器中,常有乙個總監聽程序監聽有無新的使用者連線伺服器,每當有乙個新的使用者接入,伺服器就開啟乙個新的執行緒使用者處理這個使用者的資料報,這個執行緒只服務於這個使用者,當使用者與伺服器端關閉連線以後,伺服器端銷毀這個執行緒。然而,頻繁的開啟與關閉服務程序極大的占用系統資源...
執行緒池學習
三 threadpoolexecutor 四 擴充套件執行緒池 總結在使用所執行緒進行開發時,為了避免系統頻繁地建立和銷毀執行緒,我們可以使用執行緒池技術。executors類扮演著執行緒工廠的角色,使用該類的靜態方法可以獲取特點功能的執行緒池。該方法返回固定執行緒數量的執行緒池。linkedblo...
執行緒池學習
執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後自動啟動這些任務。1.減少在建立和銷毀執行緒上所花的時間以及系統資源的開銷 2.避免因系統建立大量執行緒而導致消耗完系統記憶體的情況出現 這裡模擬資料庫連線池,這種 池 的作用一般就是兩點 1 需要大量的執行緒來完成任務,...