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)平均最佳。