对于在Java中运行基于cpu的简单程序的简单程序,最佳线程池大小是多少

问题描述 投票:13回答:2

我正在使用线程池执行任务,这些任务大多基于cpu并带有一些I / O,大小比CPU数量大一号。

Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1)

假设简单程序将所有任务提交给该执行程序,并且几乎没有做其他事情,我认为拥有更大的线程池会减慢速度,因为操作系统将不得不对它进行cpus定时分片,因此有机会给线程池中的每个线程分配一个跑步的机会。

是正确的,如果是这样,这是一个实际问题还是主要是理论上的问题,即如果我将线程池的大小增加到1000,我会注意到巨大的差异。

我使用线程池执行任务,这些任务大多基于cpu并带有一点I / O,其大小比cpus的数量大一倍。 Executors.newFixedThreadPool(Runtime.getRuntime()....

java concurrency threadpool executor
2个回答
9
投票

如果您有CPU限制的任务,则随着线程数量的增加,开销会增加,性能也会降低。注意:拥有比等待任务更多的线程只会浪费资源,但可能不会大大降低任务的速度。


9
投票

供参考,请检查此描述。

© www.soinside.com 2019 - 2024. All rights reserved.