gpt4 book ai didi

java并行流使用同一个worker

转载 作者:行者123 更新时间:2023-12-05 06:50:47 27 4
gpt4 key购买 nike

这是我的代码:

    list.stream()
.parallel()
.map(cpcP -> this.myDao.myOperation(cip, cpcP))
.collect(Collectors.toList());

myOperation 里面我写了一个日志:

log.debug("{} -> {}", Thread.currentThread().getName(), ...);

我正在获取这些日志:

ForkJoinPool.commonPool-worker-3 -> ...
ForkJoinPool.commonPool-worker-3 -> ...
ForkJoinPool.commonPool-worker-3 -> ...
ForkJoinPool.commonPool-worker-3 -> ...
ForkJoinPool.commonPool-worker-3 -> ...
ForkJoinPool.commonPool-worker-3 -> ...
ForkJoinPool.commonPool-worker-3 -> ...
ForkJoinPool.commonPool-worker-3 -> ...
...

它似乎总是使用相同的线程。

有什么想法吗?

最佳答案

除了指示公共(public)线程池可能忙于其他并行操作的注释外,还有其他几个原因:

  1. 您将系统属性 java.util.concurrent.ForkJoinPool.common.parallelism 设置为 1,明确将池的并行度限制为 1。

  2. 核心数非常少(1 个或 2 个),因为公共(public)池使用 Runtime.getRuntime().availableProcessors() - 1 作为并行度。

关于java并行流使用同一个worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66335366/

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