gpt4 book ai didi

java - ForkJoinPool.commonPool() 是否等于没有池?

转载 作者:搜寻专家 更新时间:2023-10-30 21:47:30 24 4
gpt4 key购买 nike

我已经确定,对于我的数据集,使用并行流确实比串行流更快。话虽如此,我想知道这个问题中讨论的 ForkJoinPool 使用情况:Custom thread pool in Java 8 parallel stream .

给定,

void foo()
{
barCollection.parallelStream() … do something with the stream
}

关于将使用哪个池,下面的 1 和 2 是否等效?

1)

ForkJoinPool.commonPool().submit(()->foo()).get();

2)

foo();

如果答案是肯定的,那么为什么存在ForkJoinPol.commonPool()方法?

最佳答案

并行流执行将使用公共(public)池,但流库只是该池的一个可能客户端。

至于为什么存在 commonPool() 方法,您的假设——公共(public)池的存在是因为流——是不正确的。公共(public)池的存在(并且很容易获得)是为了防止不可避免的“公地悲剧”,在这种情况下,并行操作的发起者各自创建自己的池,导致单个 JVM 上的池线程过多,从而降低效率。使用公共(public)池时,阻力最小的路径 - 只需使用公共(public)池 - 通常也是最佳选择。

并行流就是这样一种并行操作的发起者,并使用公共(public)池,但并不特殊。

关于java - ForkJoinPool.commonPool() 是否等于没有池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33694908/

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