1. 程式人生 > 其它 >為什麼⽤執行緒池?解釋下執行緒池引數?

為什麼⽤執行緒池?解釋下執行緒池引數?

面試總結

1、降低資源消耗;提⾼執行緒利⽤率,降低建立和銷燬執行緒的消耗。
2、提⾼響應速度;任務來了,直接有執行緒可⽤可執⾏,⽽不是先建立執行緒,再執⾏。
3、提⾼執行緒的可管理性;執行緒是稀缺資源,使⽤執行緒池可以統⼀分配調優監控。
corePoolSize 代表核⼼執行緒數,也就是正常情況下建立⼯作的執行緒數,這些執行緒建立後並不會 消除,⽽是⼀種常駐執行緒
maxinumPoolSize 代表的是最⼤執行緒數,它與核⼼執行緒數相對應,表示最⼤允許被建立的執行緒 Java 複製程式碼,⽐如當前任務較多,將核⼼執行緒數都⽤完了,還⽆法滿⾜需求時,此時就會建立新的執行緒,但 是執行緒池內執行緒總數不會超過最⼤執行緒數
keepAliveTime 、 unit 表示超出核⼼執行緒數之外的執行緒的空閒存活時間,也就是核⼼執行緒不 會消除,但是超出核⼼執行緒數的部分執行緒如果空閒⼀定的時間則會被消除,我們可以通過 setKeepAliveTime 來設定空閒時間
workQueue ⽤來存放待執⾏的任務,假設我們現在核⼼執行緒都已被使⽤,還有任務進來則全部 放⼊佇列,直到整個佇列被放滿但任務還再持續進⼊則會開始建立新的執行緒 ThreadFactory 實際上是⼀個執行緒⼯⼚,⽤來⽣產執行緒執⾏任務。我們可以選擇使⽤預設的創 建⼯⼚,產⽣的執行緒都在同⼀個組內,擁有相同的優先順序,且都不是守護執行緒。當然我們也可以選 擇⾃定義執行緒⼯⼚,⼀般我們會根據業務來制定不同的執行緒⼯⼚
Handler 任務拒絕策略,有兩種情況,第⼀種是當我們調⽤ shutdown 等⽅法關閉執行緒池後, 這時候即使執行緒池內部還有沒執⾏完的任務正在執⾏,但是由於執行緒池已經關閉,我們再繼續想線 程池提交任務就會遭到拒絕。另⼀種情況就是當達到最⼤執行緒數,執行緒池已經沒有能⼒繼續處理新 提交的任務時,這是也就拒絕