天天看點

為啥那個公司都想問我線程池的參數

線程池有哪些參數,各個參數的作用是什麼?

文章目錄

    • 線程池有哪些參數,各個參數的作用是什麼?
      • corePoolSize(核心工作線程數):
      • maximumPoolSize(最大線程數):
      • keepAliveTime(多餘線程存活時間):
      • workQueue(隊列):
      • threadFactory(線程建立工廠):
      • handler(拒絕政策):

線程池主要有如下6個參數:

corePoolSize(核心工作線程數):

當向線程池送出一個任務時,

若線程池已建立的線程數小于corePoolSize,

即便此時存在空閑線程,

也會通過建立一個新線程來執行該任務,

直到已建立的線程數大于或等于corePoolSize時。

maximumPoolSize(最大線程數):

線程池所允許的最大線程個數。

當隊列滿了,且已建立的線程數小于maximumPoolSize,

則線程池會建立新的線程來執行任務。

另外,對于無界隊列,可忽略該參數。

keepAliveTime(多餘線程存活時間):

當線程池中線程數大于核心線程數時,

線程的空閑時間如果超過線程存活時間,

那麼這個線程就會被銷毀,

直到線程池中的線程數小于等于核心線程數。

workQueue(隊列):

用于傳輸和儲存等待執行任務的阻塞隊列。

threadFactory(線程建立工廠):

用于建立新線程。

threadFactory建立的線程也是采用new Thread()方式,

threadFactory建立的線程名都具有統一的風格:

pool-m-thread-n(m為線程池的編号,n為線程池内的線程編号)。

handler(拒絕政策):

當線程池和隊列都滿了,

再加入線程會執行此政策