40期 說一下執行緒池內部工作原理

2022-09-19 03:30:12 字數 636 閱讀 6136

多執行緒技術是服務端開發人員必須掌握的技術。

執行緒的建立和銷毀,都涉及到系統呼叫,比較消耗系統資源,所以就引入了執行緒池技術,避免頻繁的執行緒建立和銷毀。

在j**a中有乙個executors工具類,可以為我們建立乙個執行緒池,其本質就是new了乙個threadpoolexecutor物件。

執行緒池建立

先看一下threadpoolexecutor引數最全的構造方法:

以上就是建立執行緒池時用到的引數,需牢記。

執行緒池執行流程

這裡用乙個圖來說明執行緒池的執行流程:

任務被提交到執行緒池,會先判斷當前執行緒數量是否小於corepoolsize,如果小於則建立執行緒來執行提交的任務,否則將任務放入workqueue佇列,如果workqueue滿了,則判斷當前執行緒數量是否小於maximumpoolsize,如果小於則建立執行緒執行任務,否則就會呼叫handler,以表示執行緒池拒絕接收任務。

吃水不忘挖井人:

介紹一下執行緒池

1.執行緒池就是預先建立一些執行緒,它們的集合稱為執行緒池 2.執行緒池可以很好地提高效能,在系統啟動時即建立大量空閒的執行緒,程式將乙個task給到執行緒池,執行緒池就會啟動一條執行緒拉力執行這個任務,執行結束後,該執行緒不會死亡,而實再次返回執行緒池成為空閒狀態,等待執行下乙個任務。3.執行緒的...

說一下Docker 一

對於提高伺服器的效能,支援輕量級的虛擬,實現開發測試上線的高度一致,團隊開發環境的協調統一,docker表現得極為出色。在功能上,我們將docker理解為乙個超輕量級的虛擬機器,它比vmware占用的資源少很多,執行速度快很多,因為它們的底層實現技術完全不同。docker就像乙個模具,我們能在作業系...

說一下Path類

在檔案io中,經常要處理一些與檔案路徑或檔名有關的東西,說白了,非常類似字串的處理,我個人理解,處理路徑資訊,可以等同於特殊字串的處理 不過,用字串的處理方式去處理檔案路徑問題,有些複雜,net的system.io命名空間中,提供了乙個path類,以及一系列靜態方法,可以用來處理常見的有關檔案路徑的...