什麼是執行緒池 帶你初步入門理解執行緒池

2021-09-12 18:26:59 字數 1351 閱讀 8391

答:其實說白了,執行緒池是一種多執行緒處理方法,幫我們管理執行緒,避免建立大量的執行緒增加伺服器壓力。

其實在物件導向程式設計中,物件建立和銷毀是很費時間的;那麼大家就會說,使用執行緒技術不就好了(ps: 多執行緒技術主要解決處理器單 元內多個執行緒執行的問題,它可以顯著減少處理器單元的閒置時間,增加處理器單元的吞吐能力),

那麼我們舉個例子:假設一台伺服器完成一項任務的時間為x

可以看到a,c是多執行緒多出的時間,使用者希望減少a,c所用的時間,從而減少x的時間,而執行緒池技術就是縮短這部分時間的技術

答:建立執行緒池需要使用 threadpoolexecutor 類,它的構造函式引數如下:

threadpoolexecutor(int corepoolsize, //核心執行緒數量 int maximumpoolsize, //最大執行緒數量 long keepalivetime, //超出核心執行緒數量以外的執行緒空餘存活時間 timeunit unit, //存活時間的單位 blockingqueueworkqueue, //儲存待執行任務的佇列 threadfactory threadfactory, //建立新執行緒使用的工廠 rejectedexecutionhandler handler // 當任務無法執行時的處理器 )

方法如下

public void execute(runnable command)

//2.核心池已滿,但任務佇列未滿,新增到佇列中

if (isrunning(c) && workqueue.offer(command))

//3.核心池已滿,佇列已滿,試著建立乙個新執行緒

else if (!addworker(command, false))

reject(command); //如果建立新執行緒失敗了,說明執行緒池被關閉或者執行緒池完全滿了,拒絕任務}

``我們要了解執行緒池的原理,我們說打比方簡單一點

執行緒比作員工執行緒池比作乙個團隊核心池比作團隊中核心團隊員工數核心池外的執行緒比作外包員工

假如團隊有了新需求, 先看核心員工數有沒有超過最大核心員工數,如果沒有超過,就再找乙個人進來

如果最大核心員工已經滿名額了,人事不准再進人了,那這個需求只好攢著,放到待完成任務列表吧

如果待完成任務列表也滿了,核心員工根本無法完成這麼多工,就只能再找個外包公司了

如果核心員工 + 外包員工的數量已經是團隊最多能承受人數了,就只能執行handler處理被拒絕的任務。

什麼是執行緒池

假設有一段 你希望非同步執行它,是不是要寫出這樣的 new thread r start 這種寫法當然可以完成功能,可是你這樣寫,老王這樣寫,老張也這樣寫,程式中到處都是這樣建立執行緒的方法,需要寫乙個統一的工具類讓大家呼叫 1 新執行緒 直接建立乙個新執行緒執行 2class flashexecu...

帶你搞定多執行緒 下 徹底理解執行緒池

執行緒池的應用場景 有大量的資料請求,需要多執行流並行 併發進行處理。執行緒池的優點 處理任務時從執行緒池中拿出執行緒,避免了頻繁創造與銷毀執行緒造成的資源成本的浪費。執行緒池的限制 一般執行緒池的執行緒的數量都是有限制的,必須綜合考慮系統資源。編寫思路 執行緒池構成 多個執行緒 任務緩衝佇列 將任...

什麼是執行緒池?執行緒池的工作原理和使用執行緒池的好處

乙個執行緒池管理了一組工作執行緒,同時它還包括了乙個用於放置等待執行任務的任務佇列 阻塞佇列 預設情況下,在建立了執行緒池後,執行緒池中的執行緒數為0.當任務提交給執行緒池之後的處理策略如下 1 如果此時執行緒池中的數量小於corepoolsize 核心池的大小 即使執行緒池中的執行緒都處於空閒狀態...