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 若異常中斷累計超過引數設定的值,有二種解決辦法,執...