【发布时间】:2012-10-08 16:51:19
【问题描述】:
我使用线程池来执行任务,这些任务主要基于 cpu 并带有一些 I/O, 大小比 cpu 的数量大一。
Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1)
假设一个简单的程序将其所有任务提交给这个执行程序并且几乎没有做其他事情,我认为拥有一个更大的线程池会减慢速度,因为操作系统必须更频繁地对它的 CPU 进行时间切片,从而有机会给线程池中的每个线程一个跑步的机会。
这是正确的,如果是这样,这是一个真正的问题还是主要是理论上的问题,即如果我将线程池大小增加到 1000,我会注意到一个巨大的差异。
【问题讨论】:
-
没有通用的“最佳线程池大小”之类的东西,也没有最佳的其他东西。你必须试试看。测试和测量。不是一个真正的问题。
-
我知道有人会这么说,但我认为我已经明确指定了用例并且我试图建立线程池如何工作的功能,下面给出的答案更有用。
标签: java concurrency threadpool executor