執行緒池的實現原理

2021-10-06 11:24:42 字數 580 閱讀 8080

多執行緒技術主要解決處理器單元內多個執行緒執行的問題,它可以顯著減少處理器單元的閒置時間,增加處理器單元的吞吐能力

乙個執行緒池包括以下四個基本組成部分:

1、執行緒池管理器(threadpool):用於建立並管理執行緒池,包括 建立執行緒池,銷毀執行緒池,新增新任務;

2、工作執行緒(poolworker):執行緒池中線程,在沒有任務時處於等待狀態,可以迴圈的執行任務;

3、任務介面(task):每個任務必須實現的介面,以供工作執行緒排程任務的執行,它主要規定了任務的入口,任務執行完後的收尾工作,任務的執行狀態等;

4、任務佇列(taskqueue):用於存放沒有處理的任務。提供一種緩衝機制。

執行緒池技術正是關注如何縮短或調整執行緒建立、銷毀時間的技術,從而提高伺服器程式效能的。它把t1,t3分別安排在伺服器程式的啟動和結束的時間段或者一些空閒的時間段,這樣在伺服器程式處理客戶請求時,不會有t1,t3的開銷了。 執行緒池不僅調整t1,t3產生的時間段,而且它還顯著減少了建立執行緒的數目。

執行緒池實現原理

上面這幅圖作者表達的不夠完整,作者想通過如下文本來表達內含本質。過程如下 如果請求執行緒小於執行緒池目標執行緒,則執行緒池會新建立執行緒來處理請求 如果請求執行緒數過多,超過了目標執行緒則將請求任務放入佇列中進行緩衝 如果佇列滿了 但未達到最大執行緒池數,這時會新建立執行緒 直到上限為止即maxpo...

執行緒池實現原理

蘑菇街面試,設計乙個執行緒池 入隊非阻塞佇列 當佇列中滿了時候,放入資料,資料丟失 阻塞佇列 當佇列滿了的時候,進行等待,什麼時候佇列中有出隊的資料,那麼第11個再放進去 出隊非阻塞佇列 如果現在佇列中沒有元素,取元素,得到的是null 阻塞佇列 等待,什麼時候放進去,再取出來 執行緒池使用的是阻塞...

執行緒池實現「執行緒復用」的原理?

執行緒復用原理 我們知道執行緒池會使用固定數量或可變數量的執行緒來執行任務,但無論是固定數量或可變數量的執行緒,其執行緒數量都遠遠小於任務數量,面對這種情況執行緒池可以通過執行緒復用讓同乙個執行緒去執行不同的任務,那麼執行緒復用背後的原理是什麼呢?執行緒池建立新執行緒的時機和規則 如流程圖所示,當提...