執行緒池設計原則

2022-07-24 10:15:09 字數 549 閱讀 6236

執行緒池設計原則:

當乙個新的任務加入到workqueue時:

如果此時執行緒池中的數量小於corepoolsize,即使執行緒池中的執行緒都處於空閒狀態,也要建立新的執行緒來處理被新增的任務。

如果此時執行緒池中的數量等於 corepoolsize,但是緩衝佇列 workqueue未滿,那麼任務被放入緩衝佇列。

如果此時執行緒池中的數量大於corepoolsize,緩衝佇列workqueue滿,並且執行緒池中的數量小於maximumpoolsize,建新的執行緒來處理被新增的任務。

如果此時執行緒池中的數量大於corepoolsize,緩衝佇列workqueue滿,並且執行緒池中的數量等於maximumpoolsize,那麼通過 handler所指定的策略來處理此任務。也就是:處理任務的優先順序為:核心執行緒corepoolsize、任務佇列workqueue、最大執行緒maximumpoolsize,如果三者都滿了,使用handler處理被拒絕的任務。

當執行緒池中的執行緒數量大於 corepoolsize時,如果某執行緒空閒時間超過keepalivetime,執行緒將被終止。這樣,執行緒池可以動態的調整池中的執行緒數。

執行緒池執行緒數量優化設計

實際編碼過程中,不能一味的只進行執行緒池優化效能而不關注具體的設計細節。執行緒池執行緒數量需要根據實際專案中任務數量等進行乙個估算,使得系統的設計效能趨近於我們所想的方向,而不是隨便給乙個數值,但是不進行系統的最大瓶頸的控制。廢話不多說 轉個比較詳細的效能估算思路 jdk1.5中引入了強大的conc...

設計模式 執行緒池模式

定義 worker thread的角色 例項應用 利用同步塊來處理,vector容器來儲存客戶端請求。利用vector來儲存,依舊是每次集合的最後乙個位置新增請求,從開始位置移除請求來處理。在channel有快取請求方法和處理請求方法,利用生成者與消費者模式來處理儲存請求,利用正向等待來判斷任務池的...

執行緒池和設計模式

執行緒池 一種執行緒使用模式。執行緒過多會帶來排程開銷,進而影響快取區域性性和整體效能。而執行緒池維護著多個 執行緒,等待著監督管理者分配可併發執行的任務。這避免了在處理短時間任務時建立與銷毀執行緒的代價。執行緒池不僅能夠保證核心的充分利用,還能防止過分排程。應 用 需要大量的執行緒來完成任務,且完...