Java 多線程編程經常使用的一個接口是 ExecutorService
, 其實就一個線程池的接口,通常由兩種方式建立線程池,一爲 Executors 的工廠方法,二則建立 ForkJoinPool 實例,固然也有直接使用 ThreadPoolExecutor 的。java
關於何時用 ForkJoinPool
或普通的線程池(如 Executors.newFixedThreadPool(2) 或 new ThreadPoolExecutor(...)) 不過多的述說。若是要運用到 ForkJoinTask 的話就要用 ForkJoinPool, 它是 Java7 新引入的線程池類型。編程
關於 Java7 的 fork-join 框架可參考不少年前的一篇 Java 的 fork-join 框架實例備忘。ForkJoinPool 的一個典型特徵是可以進行 Work stealing。它也是 Akka actor 效率高效的一個有力保證。多線程
本文只能某一種情形下在選擇普通線程池與 ForkJoinPool 的區別,直接說吧,普通線程更容易形成死鎖,而 ForkJoinPool 卻能應對相同的情況。 閱讀全文 >>框架