Java 線程池有哪幾種?
通常開發者都是利用 Executors 提供的通用線程池建立方法,去建立不同配置的線程池,主要差別在于不同的 ExecutorService 類型或者不同的初始參數。
Executors 目前提供了 5 種不同的線程池建立配置:
- (1)newCachedThreadPool(),它是一種用來處理大量短時間工作任務的線程池,具有幾個鮮明特點:它會試圖緩存線程并重用,當無緩存線程可用時,就會建立新的工作線程;如果線程閑置的時間超過 60 秒,則被終止并移出緩存;長時間閑置時,這種線程池,不會消耗什麼資源。其内部使用 SynchronousQueue 作為工作隊列。
- (2)newFixedThreadPool(int nThreads),重用指定數目(nThreads)的線程,其背後使用的是無界的工作隊列,任何時候最多有 nThreads 個工作線程是活動的。這意味着,如果任務數量超過了活動隊列數目,将在工作隊列中等待空閑線程出現;如果有工作線程退出,将會有新的工作線程被建立,以補足指定的數目 nThreads。