1. 程式人生 > >總結下java執行緒池的處理策略

總結下java執行緒池的處理策略

執行緒池

任務提交給執行緒池之後的處理策略:

  • 如果當前執行緒池中的執行緒數目<corePoolSize,則每來一個任務,就會建立一個執行緒去執行這個任務
  • 如果當前執行緒池中的執行緒數目>=corePoolSize,則每來一個任務,會嘗試將其新增到任務快取隊列當中,若新增成功,則該任務會等待空閒執行緒將其取出去執行;若新增失敗(一般來說是任務快取佇列已滿),如果執行緒數目<maximumPoolSize則會嘗試建立新的執行緒去執行這個任務,如果執行緒數目>=maximumPoolSize,則會採取任務拒絕策略進行處理

執行緒池中執行緒終止策略:

  • 如果執行緒池中的執行緒數量大於 corePoolSize時,如果某執行緒空閒時間(getTask)超過keepAliveTime,執行緒將被終止,直至執行緒池中的執行緒數目不大於corePoolSize;如果允許為核心池中的執行緒設定存活時間,那麼核心池中的執行緒空閒時間(getTask)超過keepAliveTime,執行緒也會被終止。