欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

指定java stream中并行处理的线程池大小

程序员文章站 2022-03-24 18:58:40
...
Java8实战:并行线程池 写道
并行流内部使用了默认的ForkJoinPool,它默认的 线程数量就是你的处理器数量,这个值是由Runtime.getRuntime().availableProcessors()得到的。
但是你可以通过系统属性 java.util.concurrent.ForkJoinPool.common.parallelism 来改变线程池大小,如下所示:
System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism","12");
这是一个全局设置,因此它将影响代码中所有的并行流。反过来说,目前还无法专为某个并行流指定这个值。
一般而言,让ForkJoinPool的大小等于处理器数量是个不错的默认值, 除非你有很好的理由,否则我们强烈建议你不要修改它。

 

    static void test001() {
        System.setProperty("java.util.concurrent.ForkJoinPool.common.parallelism", "120");

        IntStream.range(0, 100).parallel().forEach(n -> {
            System.out.println(String.format("%s --> %s", Thread.currentThread().getName(), n));
        });
    }