Java 8で導入されたStream APIの並列ストリーム処理において、実行するスレッドプールを明示指定する方法。Stream APIの既定動作では ForkJoinPoolの共通スレッドプール を利用する。*1
import static java.util.stream.IntStream.range; // 一般に論理プロセッサ数の並列度で実行 range(1, 1000000).parallel().filter(...).collect(...);
// 2並列ForkJoinPool上で並列実行 ForkJoinPool forkJoinPool = new ForkJoinPool(2); forkJoinPool.submit(() -> range(1, 1000000).parallel().filter(...).collect(...) ).get();
関連URL
- How to specify thread-pool for Java 8 parallel streams
- concurrency - Custom thread pool in Java 8 parallel stream - Stack Overflow
*1:ForkJoinPool共通スレッドプールの並列度は getCommonPoolParallelismメソッド で取得可能。