執行緒池的引數和拒絕策略

2021-10-06 19:09:22 字數 1200 閱讀 5669

執行緒池的引數有哪些

corepoolsize 核心執行緒數,指保留的執行緒池大小(不超過maximumpoolsize值時,執行緒池中最多有corepoolsize 個執行緒工作)。 

maximumpoolsize 指的是執行緒池的最大大小(執行緒池中最大有corepoolsize 個執行緒可執行)。

keepalivetime 指的是空閒執行緒結束的超時時間(當乙個執行緒不工作時,過keepalivetime 長時間將停止該執行緒)。

unit 是乙個列舉,表示 keepalivetime 的單位(有nanoseconds, microseconds, milliseconds, seconds, minutes, hours, days,7個可選值)。 納秒,微秒,毫秒,秒,分,小時,天

workqueue 表示存放任務的佇列(存放需要被執行緒池執行的執行緒佇列)。

handler 拒絕策略(新增任務失敗後如何處理該任務).

有幾種拒絕策略

abortpolicy

threadpoolexecutor.abortpolicy:丟棄任務並丟擲rejectedexecutionexception異常。

這是執行緒池預設的拒絕策略,在任務不能再提交的時候,丟擲異常,及時反饋程式執行狀態。如果是比較關鍵的業務,

推薦使用此拒絕策略,這樣子在系統不能承載更大的併發量的時候,能夠及時的通過異常發現。

discardpolicy

threadpoolexecutor.discardpolicy:丟棄任務,但是不丟擲異常。如果執行緒佇列已滿,

則後續提交的任務都會被丟棄,且是靜默丟棄。

使用此策略,可能會使我們無法發現系統的異常狀態。建議是一些無關緊要的業務採用此策略。

discardoldestpolicy

threadpoolexecutor.discardoldestpolicy:丟棄佇列最前面的任務,然後重新提交被拒絕的任務。

此拒絕策略,是一種喜新厭舊的拒絕策略。是否要採用此種拒絕策略,還得根據實際業務是否允許丟棄老任務來認真衡量。

callerrunspolicy

threadpoolexecutor.callerrunspolicy:由呼叫執行緒處理該任務

如果任務被拒絕了,則由呼叫執行緒(提交任務的執行緒)直接執行此任務

執行緒池拒絕策略

手寫執行緒池拒絕策略 執行緒池的引數 預設策略 預設 拒絕策略 丟擲異常 程式崩潰 第二種策略 執行緒從哪來 回哪去 這個 用力 將 executorservice exec newthreadpoolexecutor 1 2,30 timeunit.microseconds,newarrayblo...

執行緒池拒絕策略

public void rejectedexecution runnable r,threadpoolexecutor e 丟擲異常表明哪個任務在哪個執行緒池中執行失敗了 public void rejectedexecution runnable r,threadpoolexecutor e 如果...

執行緒池的拒絕策略

今天我自己整理了一下threadpoolexector的最後乙個引數 拒絕策略 當新到的任務數量已經超過了系統實際能夠承載的能力時,就會觸發拒絕策略,這是系統超負荷執行的補救措施具體以下3個方面 執行緒池有乙個任務佇列,用於快取所有待處理的任務,一旦開始處理這些任務,這些任務將從任務佇列中刪除,在任...