gpt4 book ai didi

java - 处理器和线程之间的区别

转载 作者:搜寻专家 更新时间:2023-11-01 02:58:21 25 4
gpt4 key购买 nike

<分区>

我正在使用 java 8 的并行流,但我不明白一件事:

我有一台有 8 个处理器的机器......

IntStream.range(0, 9).parallel().forEach(i -> {
int cnt = 0;
while (System.currentTimeMillis() < runUntil)
cnt++;
System.out.println(i + ": " + cnt);
})

这是否意味着我只能使用 8 个线程?

上面的代码并行运行 8 个,下一个将等待,但如果我使用使用 ForkJoinPool 的自定义线程池,则 8 个以上的任务将并行运行。

ForkJoinPool forkJoinPool = new ForkJoinPool(17);
forkJoinPool.submit(()->IntStream.range(0, 17).parallel().forEach(i ->
{
int cnt = 0;
while(System.currentTimeMillis() < runUntil)
cnt++;
System.out.println(i + ": " + cnt);
})).get();

上面的代码只并行运行了16个。如果我可以在 8 处理器机器上使用超过 8 个线程,我可以使用的最大线程数是多少。

编辑 1 - 这是否意味着我们可以使用的最大线程数是 2* 可用处理器的?

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