一、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中常用的...