執行緒池引數調優

2021-10-23 00:19:50 字數 1647 閱讀 5146

threadpoolexecutor

threadpoolexecutor建構函式的五大引數

public

threadpoolexecutor

(int corepoolsize,

int maximumpoolsize,

long keepalivetime,

timeunit unit,

blockingqueue

workqueue)

提問:如下執行緒池同一時間最多能接受多少個執行緒?

threadpoolexecutor pool =

newthreadpoolexecutor(2

,5,10l, timeunit.seconds,

newarrayblockingqueue

<

>(5));

答案是10個,等待佇列裡5個,最大執行緒數5個,多的執行緒請求將會被拒絕,異常如下

執行緒池的處理流程:

邏輯流程圖

寫個demo壓測下執行緒池

public

class

threadpooldemo

catch

(interruptedexception e)})

; pool.

shutdown()

; system.out.

println

("use time "

+(system.

currenttimemillis()

/1000

- start)

+"秒");

}static

class

mythread

implements

runnable

catch

(interruptedexception e)}}

}

執行結果

執行500個耗時0.5秒的操作用時2秒,速度提公升了125倍。

注意執行緒池的引數設定一定要甚重,當併發過高時,等待佇列和最大執行緒數都到極限時,執行緒池就會採用一定的拒絕策略拒絕任務,這個一定要根據業務場景考慮。

另外還有一點佇列盡量選用有界佇列,否則最大執行緒數是沒有意義的,潛在風險就是記憶體會爆。

【以上僅是個人觀點,如有錯誤歡迎指證】

Dubbo 執行緒池調優實戰分析

dubbo的服務提供者端一共包含了兩類執行緒池,一類叫做io執行緒池,還有一類叫做業務執行緒池,它們各自有著自己的分工,如下圖所示 all 將請求全部交給業務執行緒池處理 這裡面除了日常的消費者進行服務呼叫之外,還有關於服務的心跳校驗,連線事件,斷開服務,響應資料寫回等 execution 會將請求...

MySQL引數調優

l 通用類 key buffer size 含義 用於索引塊的緩衝區大小,增加它可得到更好處理的索引 對所有讀和多重寫 影響 對於myisam 表的影響不是很大,myisam 會使用系統的快取來儲存資料,所以大量使用 myisam 表的機器記憶體很快就會耗盡。但是,如果你將該值設得過大 例如,大於總...

mysql引數調優

l max connect errors max connect errors預設值為10,也即mysqld執行緒沒重新啟動過,一台物理伺服器只要連線 異常中斷累計超過10次,就再也無法連線上mysqld服務,為此建議大家設定此值至少大於等於10w 若異常中斷累計超過引數設定的值,有二種解決辦法,執...