指定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的大小等于处理器数量是个不错的默认值, 除非你有很好的理由,否则我们强烈建议你不要修改它。
但是你可以通过系统属性 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)); }); }
上一篇: 微信拆礼盒怎么用?微信拆礼盒制作教程