gpt4 book ai didi

java - Java 8 Streams 中的并行性和平面图

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:48 25 4
gpt4 key购买 nike

考虑以下示例:

    IntStream.of(-1, 1)
.parallel()
.flatMap(i->IntStream.range(0,1000).parallel())
.forEach(System.out::println);

是否将内部标志设置为平行有关系吗?无论是否保留,结果看起来都非常相似。

另外,为什么代码 (ReferencePipeline) 对映射进行顺序化?

我对 line 感到困惑:

result.sequential().forEach(downstream);

最佳答案

在目前的JDK(jdk1.8.0_25)中,答案是否定的,你把inner flag设置为parallel也没关系,因为即使你设置了它,.flatMap () 实现集将流返回到此处的顺序:

result.sequential().forEach(downstream);

("result"是内部流,它是 sequential() 方法的文档说:返回一个等效的顺序流。 可能会返回自己,因为流已经是顺序的,或者因为底层流状态被修改为顺序的。)

在大多数情况下,可以不努力使内部流平行;如果外部流的项数至少与可以并行运行的线程数相同(ForkJoinPool.commonPool().getParallelism() = 3 在我的计算机中)。

关于java - Java 8 Streams 中的并行性和平面图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24411313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com