我使用线程池来执行任务,这些任务主要基于 cpu,带有一点 I/O,大小比 cpu 的数量大一。
Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1)
假设一个简单的程序将其所有任务提交给这个执行程序并且几乎不做其他事情,我认为拥有一个更大的线程池会减慢速度,因为操作系统必须更频繁地对它的 CPU 进行时间切片,从而有机会让线程池中的每个线程都有机会跑。
这是正确的,如果是这样,这是一个真正的问题还是主要是理论上的问题,即如果我将线程池大小增加到 1000,我会注意到一个巨大的差异。