Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java8:forkjoinpool内的parallelstream在forkjoinpool的大小超过可用处理器数量时使用更多线程_Java_Forkjoinpool - Fatal编程技术网

Java8:forkjoinpool内的parallelstream在forkjoinpool的大小超过可用处理器数量时使用更多线程

Java8:forkjoinpool内的parallelstream在forkjoinpool的大小超过可用处理器数量时使用更多线程,java,forkjoinpool,Java,Forkjoinpool,我的系统中总共有8个可用处理器。 当forkjoinpool显式设置为8或其下的任何数字时,parallelstream将使用该数量的工作线程 但是,当我使用大于8的数字时,parallelstream会创建范围为0-15的工作线程 当您使用下面的代码控制由parallelstream创建的并行线程数时,这是否是预期的行为 List<String> list = new ArrayList<String>(); // 1000 names in it ForkJoinP

我的系统中总共有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();
List List=new ArrayList();//里面有1000个名字
ForkJoinPool ForkJoinPool=新的ForkJoinPool(8);
forkJoinPool.submit(()->
list.parallelStream().forEach(名称->{
试一试{
睡眠(5);
System.out.println(“名称:”+Name);
}捕捉(中断异常e){
}
})
).get();