1. 程式人生 > 程式設計 >java 執行緒池的實現方法

java 執行緒池的實現方法

執行緒池有以下幾種實現方式:

Executors目前提供了5種不同的執行緒池建立配置:

1、newCachedThreadPool()

它是用來處理大量短時間工作任務的執行緒池,具有幾個鮮明特點:它會試圖快取執行緒並重用,當無快取執行緒可用時,就會建立新的工作執行緒;如果執行緒閒置時間超過60秒,則被終止並移除快取;長時間閒置時,這種執行緒池,不會消耗什麼資源。其內部使用SynchronousQueue作為工作佇列。

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通過Executors工廠類提供我們的執行緒池一共有4種:

fixedThreadPool() //啟動固定執行緒數的執行緒池

CachedThreadPool() //按需分配的執行緒池

ScheduledThreadPoolExecutor()//定時,定期執行任務的執行緒池

ThreadPoolExecutor()//指定執行緒數的執行緒池。

以上就是本次介紹的全部相關知識點,感謝大家的學習和對我們的支援。