什么是Java中基于CPU任务的简单程序的最佳线程池大小



im使用线程池执行任务,这些任务主要是基于I/O的CPU尺寸大于CPU的数量。

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

假设简单程序的情况将其所有任务提交给该执行人,并且我认为没有其他较大的较大的较大的东西会减慢速度,因为OS必须更常见的是将每个线程在线程池中更常见跑步的机会。

是正确的,如果这是一个真正的问题,或者主要是理论上,即,如果我将线池大小提高到1000,我会注意到巨大的差异。

如果您有CPU绑定的任务,则随着您增加开销的线程数量,并且性能会增加。注意:比等待任务的线程更多只是浪费资源,但可能不会那么放慢任务。

我会使用CPU数量的多个(例如1或2),而不是仅添加一个,因为一个线程太多的线程可能会有令人惊讶的开销。

供参考,检查此描述。

http://codeidol.com/java/java-concurrency/applying-thread-pools/sizing-thread-pools/

简而言之,您拥有的(编号CPU 1)平均最佳。

最新更新