我正在使用线程池执行任务,这些任务大多基于cpu并带有一些I / O,大小比CPU数量大一号。
Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1)
假设简单程序将所有任务提交给该执行程序,并且几乎没有做其他事情,我认为拥有更大的线程池会减慢速度,因为操作系统将不得不对它进行cpus定时分片,因此有机会给线程池中的每个线程分配一个跑步的机会。
是正确的,如果是这样,这是一个实际问题还是主要是理论上的问题,即如果我将线程池的大小增加到1000,我会注意到巨大的差异。
我使用线程池执行任务,这些任务大多基于cpu并带有一点I / O,其大小比cpus的数量大一倍。 Executors.newFixedThreadPool(Runtime.getRuntime()....
如果您有CPU限制的任务,则随着线程数量的增加,开销会增加,性能也会降低。注意:拥有比等待任务更多的线程只会浪费资源,但可能不会大大降低任务的速度。
供参考,请检查此描述。