在資源不足以滿足當前需求時,將資源圈定為池,反覆利用(計畫經濟),從而滿足當前需求,從本質上來講是一種以時間換空間的做法。
執行緒池,是在存在大量任務的前提下,固定一定數量的執行緒去執行這些任務;提高了執行緒本身的利用率,減少了大量建立銷毀執行緒所帶來的效能開銷問題。、
構造函式引數
執行緒池建立方法的選擇
io密集型任務:比如讀寫資料庫、讀取檔案、網路讀寫等相關任務,這些任務會經常在等待某些資源,那麼執行緒數可以設定為cpu的很多倍,保證cpu不會處在等待期間內,具體的乙個數量可以通過壓測得出
brain goetz的計算公式:執行緒數 = cpu核心數 * (1 + 平均等待時間 / 平均工作時間)
,平均等待時間
代表cpu的等待時間,平均工作時間
代表cpu的工作時間,前者越大說明cpu需要等待的時間越長,可以把執行緒數量設定的大一些,盡量不讓cpu空閒;後者越大則說明使用cpu的時間越長,執行緒數量需要設定的小一些,因為cpu已經滿負荷運轉了,設定再多的執行緒也只是徒勞,只會給記憶體增加壓力
拒絕時機
拒絕策略鉤子,即任務執行前後進行的一些操作,相當於給執行緒池加了個切面,這是threadpoolexecutor
中提供的一些方法,可以通過重寫去定義相關操作
執行緒池主要由以下四部分組成
執行緒池的執行緒,比如corepool中的執行緒,都是已經被呼叫過start()
,這些執行緒的作用(run()
)是,不斷的去任務佇列中獲取任務,然後直接呼叫任務的run()
,讓任務執行
執行緒池體系(一) 總體概述
執行緒池頂級介面,只定義了乙個執行無返回值任務的方法。public inte ce executor 執行緒池次級介面,對executor做了一些擴充套件,主要增加了關閉執行緒池 執行有返回值任務 批量執行任務的方法。public inte ce executorservice extends ex...
執行緒 執行緒池
執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後執行,主要實現 建立執行緒和管理執行緒,並且給執行緒分配任務。執行緒池中的執行緒是併發執行的。乙個比較簡單的執行緒池至少應包含執行緒池管理器 工作執行緒 任務列隊 任務介面等部分。其中執行緒池管理器的作用是建立 銷毀並管理...
執行緒 執行緒池
乙個簡單執行緒的建立和銷毀如下 與程序程序相比,執行緒是一種輕量級的工具,但是輕量並不代表沒有,它的建立和關閉依然需要花費時間,如果建立和銷毀的時間還大於執行緒本身完成的工作,那就會得不償失,甚至會造成out of memory。即使沒有,大量的執行緒 也會給gc帶來巨大的壓力。為了解決這樣的問題,...