ThreadPoolExecutor的重要引數設定

2021-09-24 18:59:11 字數 1050 閱讀 6673

一、threadpoolexecutor的重要引數

queuecapacity:任務佇列容量(阻塞佇列)

maxpoolsize:最大執行緒數

keepalivetime:執行緒空閒時間

allowcorethreadtimeout:允許核心執行緒超時

rejectedexecutionhandler:任務拒絕處理器

執行緒池會呼叫rejectedexecutionhandler來處理這個任務。如果沒有設定預設是abortpolicy,會丟擲異常

threadpoolexecutor類有幾個內部實現類來處理這類情況:

實現rejectedexecutionhandler介面,可自定義處理器

二、threadpoolexecutor執行順序:

執行緒池按以下行為執行任務

當執行緒數小於核心執行緒數時,建立執行緒。

當執行緒數大於等於核心執行緒數,且任務佇列未滿時,將任務放入任務佇列。

當執行緒數大於等於核心執行緒數,且任務佇列已滿

若執行緒數小於最大執行緒數,建立執行緒

若執行緒數等於最大執行緒數,丟擲異常,拒絕任務

三、如何設定引數

如何來設定

做幾個計算

queuecapacity = (coresizepool/taskcost)*responsetime

maxpoolsize = (max(tasks)- queuecapacity)/(1/taskcost)

rejectedexecutionhandler:根據具體情況來決定,任務不重要可丟棄,任務重要則要利用一些緩衝機制來處理

keepalivetime和allowcorethreadtimeout採用預設通常能滿足

以上都是理想值,實際情況下要根據機器效能來決定。如果在未達到最大執行緒數的情況機器cpu load已經滿了,則需要通過公升級硬體(呵呵)和優化**,降低taskcost來處理。

ThreadPoolExecutor 引數解析

threadpoolexecutor 主要有以下幾個引數 public threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepalivetime,timeunit unit,blockingqueueworkqueue,th...

ThreadPoolExecutor引數設定

1 首先預估系統負載,需要以下幾個值 tasks 每秒的任務數,假設為50 100 tasktime 每個任務花費時間,假設為0.1s responsetime 系統允許容忍的最大響應時間,假設為30s 2 計算 1 corepoolsize 每個任務需要tasktime秒處理,則每個執行緒每秒可處...

mysql重要引數 MySQL 部分重要引數說明

特別推薦 innodb buffer pool size 檢視系統變數 variable name value innodb buffer pool chunk size 134217728 128m innodb buffer pool instances 1 innodb buffer pool...