為什麼要使用執行緒池

2021-09-19 14:03:50 字數 545 閱讀 9551

諸如web伺服器,資料庫伺服器,檔案伺服器或者郵件伺服器之類的許多伺服器應用程式都面向處理來自某些遠端**短小的任務。請求以某種方式到達伺服器,這種方式可能是通過網路協議(例如http,ftp)通過jms佇列或者可能通過輪詢資料庫。不管請求如何到達,伺服器應用程式經常出現的情況是:單個任務處理的時間很短而請求的數目是巨大的。每當乙個請求到達就建立乙個新執行緒,然後在新執行緒中為請求服務,但是頻繁的建立執行緒,銷毀執行緒所帶來的系統開銷其實是非常大的。

執行緒池為執行緒生命週期開銷問題和資源不足問題提供了解決方案。通過對多個任務重用執行緒。執行緒的建立開銷被分攤到多個任務上。其好處是,因為在請求到達時執行緒已經存在,所以無意中消除了執行緒建立所帶來的延遲。這樣,就可以立即請求服務,使應用程式響應更快。而且,通過適當地調整執行緒池中的執行緒數目,也就是當請求的數目超過某個閾值時,就強制其它任何新到的請求一直等待,直到獲得乙個執行緒處理為止,從而可以防止資源不足。

風險與機遇

用執行緒池構建的應用程式容易遭受任何其它多執行緒應用程式容易遭受的所有併發風險,諸如同步錯誤和死鎖,它還容易遭受特定於執行緒池的少數其它風險,諸如與池有關的死鎖,資源不足和執行緒洩露。

為什麼要使用執行緒池?

專案中一直在使用執行緒池,平時卻很少問自己 為什麼要使用執行緒池,當別人問起為什麼的時候,腦子一片茫然。所以最近研究了一下為什麼?順便摘錄了一些的回答 1.乙個執行緒的週期分為 建立 執行 銷毀三個階段。處理乙個任務時,首先建立乙個任務執行緒,然後執行任務,完了,銷毀執行緒。而執行緒處於執行狀態的時...

執行緒池 為什麼需要使用執行緒池

通過上面執行緒池的簡介,我們其實可以發現,普通的建立乙個執行緒都是及創及用,並且沒有上線,我想建立1000個執行緒或者建立10000個執行緒都可以,但是這樣建立執行緒的方式有乙個問題,那就是忽略了執行環境的效能,比如我們平時乙個64位4核的伺服器,他建議的執行緒數可以由公示算出來 執行緒池大小 物理...

為什麼要使用連線池?

傳統的資料庫連線方式 乙個連線物件對應乙個物理連線,每次操作都開啟乙個物理連線,使用完都關閉連線,造成系統效能低下。連線池技術 客戶程式得到的連線物件是連線池中物理連線的乙個控制代碼,呼叫連線物件的close 方法,物理連線並沒有關閉,資料來源的實現只是刪除了客戶程式中的連線物件和池中的連線物件之間...