计算出应该用于应用程序的理论最佳线程数有助于我们的程序的性能,应用程序运行时特征主要有CPU密集型工作和主要等待IO两种特征,或者是混合一起。
CPU 任务
threads = number of CPUs + 1
在Fork/Join框架中,默认的线程数是cpu核心数。这很直观,让CPU尽可能在做事情,不要闲着,压榨劳动力。
IO 任务
计算IO任务的线程的最佳数量没有那么明显。在IO绑定任务期间,CPU将处于空闲状态(等待或阻塞)。此空闲时间可以更好地用于启动另一个IO请求。
我们可以将其wait time / service time视为衡量任务竞争程度的指标。
参考:http://baddotrobot.com/blog/2013/06/01/optimum-number-of-threads/