我的系统中总共有8个可用处理器。 当forkjoinpool显式设置为8或其中的任何数字时,parallelstream将使用该数量的工作线程。
但是,当我使用大于8的数字时,parallelstream创建的工作线程范围为0-15。
使用以下代码控制由parallelstream创建的并行线程数时,这是否是预期的行为。
List<String> list = new ArrayList<String>(); // 1000 names in it
ForkJoinPool forkJoinPool = new ForkJoinPool(8);
forkJoinPool.submit(() ->
list.parallelStream().forEach(name -> {
try {
Thread.sleep(5);
System.out.println("Name : " + name);
} catch (InterruptedException e) {
}
})
).get();