執行緒池有以下幾種實作方式:
Executors目前提供了5種不同的執行緒池建立配置:
1 、newCachedThreadPool()
它是用來處理大量短時間工作任務的線程池,具有幾個鮮明特點:它會試圖緩存線程並重用,當無緩存線程可用時,就會建立新的工作執行緒;如果執行緒閒置時間超過60秒,則被終止並移除快取;長時間閒置時,這種執行緒池,不會消耗什麼資源。其內部使用SynchronousQueue作為工作隊列。
影片教學推薦:java影片教學
2、newFixedThreadPool(int nThreads)
重複使用指定數目(nThreads)的線程,其背後使用的是無界的工作隊列,任何時候最多有nThreads個工作線程是活動的。這意味著,如果任務數量超過了活動線程數目,將在工作隊列中等待空閒線程出現;如果工作線程退出,將會有新的工作線程被創建,以補足指定數目nThreads。
3、newSingleThreadExecutor()
它的特點在於工作執行緒數目限制為1,操作一個無界的工作佇列,所以它保證了所有的任務都是被順序執行,最多會有一個任務處於活動狀態,且不予許使用者改動執行緒池實例,因此可以避免改變執行緒數目。
4、newSingleThreadScheduledExecutor()和newScheduledThreadPool(int corePoolSize)
建立的是一個ScheduledExecutorService,可以進行定時或週期性的工作排程或差異在於單一工作執行緒還是多個工作線程。
5、newWorkStealingPool(int parallelism)
這是一個經常被忽略的執行緒池,Java 8 才加入這個創建方法,其內部會建構ForkJoinPool,利用Work-Stealing演算法,並行地處理任務,不保證處理順序。
相關文章教學分享:java快速入門
以上是執行緒池的實作方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!