【面試必備】簡單瞭解下ExecutorService

在Java 5以後,ExecutorService類被引入,主要是爲了方便線程的統一管理。緩存

ExecutorService的做用

ExecutorService實際上是一個線程池,它能夠接收任務,而後根據配置來分配線程,並控制其調度。線程

分類

newCacheThreadPool

  • 這種線程池是無界線程池,即它能夠建立任意條線程。
  • 每次建立新線程時,先檢查本身的緩存池中有沒有,沒有才會建立。
  • 它有默認的TimeOut(=60s),超過這個時長沒活動的線程就會被自動的移除,因此徹底沒必要要擔憂線程的結束問題。
  • 這是比較推薦的類型。

newFixedThreadPool

這個線程和newCacheThreadPool很相似,不一樣點在於:隊列

  • 它有線程數量上限。
  • 它沒有默認的TimeOut。

ScheduledThreadPool

  • 它能夠按照順序延遲調度線程。

SingleThreadPool

  • 它只有一條線程。
  • 感受並無多大用處。

ThreadPoolExecutor

這種類型的線程池能夠本身配置相關參數。table


參數 說明
corePoolSize 池中所保存的線程數,包括空閒線程。
maximumPoolSize 池中容許的最大線程數。’
keepAliveTime 當線程數大於核心時,此爲終止多餘的空閒等待新任務的線程的最長時間。
workQueue 執行前用於保持任務的隊列。此隊列僅保持由 execute 方法提交的 Runnable 任務。
相關文章
相關標籤/搜索