Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Java 8 Java8流api中的forkjoinpool是单例的吗? List List=Arrays.asList(3,4,6,1,2,3,5,6); list.parallelStream().forEach(System.out::print); list.parallelStream().map(a->a+2).forEach(a->System.out.println(Thread.currentThread().getName()+“--”+a));_Java 8_Java Stream - Fatal编程技术网

Java 8 Java8流api中的forkjoinpool是单例的吗? List List=Arrays.asList(3,4,6,1,2,3,5,6); list.parallelStream().forEach(System.out::print); list.parallelStream().map(a->a+2).forEach(a->System.out.println(Thread.currentThread().getName()+“--”+a));

Java 8 Java8流api中的forkjoinpool是单例的吗? List List=Arrays.asList(3,4,6,1,2,3,5,6); list.parallelStream().forEach(System.out::print); list.parallelStream().map(a->a+2).forEach(a->System.out.println(Thread.currentThread().getName()+“--”+a));,java-8,java-stream,Java 8,Java Stream,“二号线”和“三号线”将使用同一个池?如果没有,如何让他们使用一个?所有并行流都在返回的单例池中运行。例外情况是,如果从ForkJoinPool内部运行并行流,则该流将在调用它的池中运行 这些是Streams API文档中未指定的实现细节,因此java开发人员完全有权选择其他池或完全避开fork/join框架,并做其他事情 若知道哪些线程最终执行代码对您至关重要,那个么streams API可能不是您的最佳选择 目前-是的,默认情况下,所有并行流都有一个单独的池-它是ForkJoinPool#c

“二号线”和“三号线”将使用同一个池?如果没有,如何让他们使用一个?

所有并行流都在返回的单例池中运行。例外情况是,如果从
ForkJoinPool
内部运行并行流,则该流将在调用它的池中运行

这些是Streams API文档中未指定的实现细节,因此java开发人员完全有权选择其他池或完全避开fork/join框架,并做其他事情

若知道哪些线程最终执行代码对您至关重要,那个么streams API可能不是您的最佳选择

目前-是的,默认情况下,所有并行流都有一个单独的池-它是
ForkJoinPool#commonPool
;因此,你的观察是正确的

有一种方法可以为流管道的每次执行设置自定义池,请参阅

第二个示例如下所示:

List<Integer> list = Arrays.asList(3, 4, 6, 1, 2, 3, 5, 6);  
list.parallelStream().forEach(System.out::print);        
list.parallelStream().map(a -> a + 2).forEach(a -> System.out.println(Thread.currentThread().getName() + "--" + a));
List List=Arrays.asList(3,4,6,1,2,3,5,6);
ForkJoinPool ForkJoinPool=新的ForkJoinPool(4);
ForkJoinTask任务=forkJoinPool.submit(()->列表
.parallelStream()
.map(a->a+2)
.forEach(a->System.out.println(Thread.currentThread().getName()+“--”+a));
task.get();
    List<Integer> list = Arrays.asList(3, 4, 6, 1, 2, 3, 5, 6);

    ForkJoinPool forkJoinPool = new ForkJoinPool(4);
    ForkJoinTask<?> task = forkJoinPool.submit(() -> list
            .parallelStream()
            .map(a -> a + 2)
            .forEach(a -> System.out.println(Thread.currentThread().getName() + "--" + a)));
    task.get();