執行緒池引數設定技巧

2022-05-02 19:03:12 字數 939 閱讀 8713

一、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來處理。

執行緒池核心引數及引數設定

2.執行緒池引數設定 threadpoolexecutor是建立執行緒池的核心類,它定義了一些建構函式用來建立執行緒池,如下是它的其中乙個建構函式 public threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepaliv...

java中線程池引數設定

本文主要介紹執行緒池是解決了哪些問題以及執行緒池中 的corepoolsize 核心執行緒數 queuecapacity 等待佇列的長度 maximumpoolsize 最大核心執行緒數 本文不會對執行緒池各個引數介紹,假定你已經了解了執行緒池各個引數的含義。當前實際應用中,經常會遇到單個請求處理時...

引數設定 pandas引數設定小技巧

python大資料分析記錄 分享 成長 在日常使用pandas的過程中,由於我們所分析的資料表規模 格式上的差異,使得同樣的函式或方法作用在不同資料上的效果存在差異。而pandas有著自己的一套 引數設定系統 可以幫助我們在遇到不同的資料時靈活調節從而達到最好的效果,本文就將介紹pandas中常用的...