ThreadPoolExecutor 構造引數說明

2021-10-24 22:30:07 字數 812 閱讀 6528

核心執行緒數,當乙個新的任務提交時,如果執行緒池中的數量未達到核心執行緒數,會新起乙個執行緒執行該任務,即使執行緒池中有空閒的執行緒。

執行緒池中允許的最大執行緒數,包含包含核心執行緒和非核心執行緒。

當執行緒數超過核心執行緒數時,該引數規定了超過核心執行緒數的執行緒最大空閒時間。

描述keepalivetime的時間單位。

任務等待佇列,當乙個新的任務提交時,如果執行緒池中的執行緒數超過了核心執行緒數,且任務等待佇列未滿,會將該任務加入等待佇列中,並不會立即執行該任務;

當任核心執行緒數和任務佇列都達到閾值時,如果執行緒數未達到最大執行緒數,將會新起乙個執行緒執行該任務。

自定義執行緒工廠

當執行緒數和等待佇列都達到閾值時,新的任務採用哪種拒絕策略。

常見的拒絕策略:

拒絕策略類

拒絕策略

threadpoolexecutor.callerrunspolicy

threadpoolexecutor.abortpolicy

丟擲rejectedexecutionexception異常 ("task " + r.tostring() +" rejected from " +e.tostring())。

threadpoolexecutor.discardpolicy

什麼也不做,丟棄策略。

threadpoolexecutor.discardoldestpolicy

取出佇列中最久未被執行的任務,進行執行,如果仍然無法執行,直接丟棄。

ThreadPoolExecutor構造引數分析

threadpoolexecutor7個引數 corepoolsize 核心執行緒數執行緒數定義了最小可以同時執行的執行緒數量。maximumpoolsize 當佇列中存放的任務達到佇列容量的時候,當前可以同時執行的執行緒數量變為最大執行緒數。workqueue 當新任務來的時候會先判斷當前執行的執...

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秒處理,則每個執行緒每秒可處...