线程池线程数量计算

来源:17-1 课程总结

weibo_北桥_03164202

2019-07-12

老师好,该如何确定项目中线程池的线程的数量,一般项目中的线程池都是建立固定的线程数量,之前看网上有三种说法,一种是基于项目是IO,还是非IO的项目,基于CPU的核数,线程池中线程的数量就是cpu的核数;另一种是基于业务,需要每秒钟需要多少完成任务数量和每一个任务完成的时间,进行计算,从而获得项目所需的线程数;第三种是国外的并发网上译文解释作者是怎么计算的,只讲了一个IO项目的计算,很多专业术语,很难理解,老师是否有简单有效的方法呢

写回答

2回答

weibo_北桥_03164202

提问者

2019-07-15

老师,刚才看了连接给的方案,需要一步步的提升线程池的线程数量,通过压测结果来确定最佳的线程数,这个确实是一个最实用的方法,但是还是有点笼统,有没有已经形成理论一样的方案,

0
1
Jimin
可能说出来会让你有些失望。实际中,一个项目可能会使用多个线程池,我负责的项目不少都是这样,项目中线程池最多的用处是:1、异步,让主流程更快结束;2、加速,让某些流程更快执行完,这时基本使用5个或10个基本已经能满足要求了,很少需要继续加到20个的。受项目qps变化,及占用内存、cpu的不断变化影响,就单独某个场景而言,即使20个更ok,但考虑实际中可能有多个场景使用线程池,某个自己的ok从总体看也不一定ok了。因此我们习惯上就是10个开始,根据具体执行效果来看该增加还是减少。这个数字我们总体实践下来,还算是比较ok的,很多时候并不需要继续调整。
2019-07-15
共1条回复

Jimin

2019-07-12

你好,关于项目开启多少个线程的问题,之前有同学问过类似的问题:http://coding.imooc.com/learn/questiondetail/74885.html
你可以先看一下,这里介绍了该如何去合理设置线程数目。看完还有什么问题,继续回复~
祝你学习愉快~

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程