线程配置方案-线程数规划的公式总结

时间:2024-09-30 20:47:12

在《Java 并发编程实战》中介绍了一个线程数计算的公式

线程配置方案_死循环_07

图片

如果希望程序跑到CPU的目标利用率,需要的线程数公式为:

线程配置方案_单线程_08

图片

公式很清晰,现在来带入上面的例子试试看:

如果我期望目标利用率为90%(多核90),那么需要的线程数为:


核心数12 * 利用率0.9 * (1 + 50(sleep时间)/50(循环50_000_000耗时)) ≈ 22

分析一下,W是等待时间比如IO等待的时间,C是计算时间即我完成那么多次循环一共耗时是多少

现在把线程数调到22,看看结果:

线程配置方案_线程池_09

图片

现在CPU利用率大概80+,和预期比较接近了,由于线程数过多,还有些上下文切换的开销,再加上测试用例不够严谨,所以实际利用率低一些也正常。