合理选择线程池大小

在看这个问题之前一定要明白的是你的线程(应用程序)是不能控制CPU的计算资源分配的。你只是将任务提交给操作系统,至于CPU资源如何分配是由操作系统来控制的。


对于多线程下的解决方案,并不是线程量越多就越好,线程池数量的设置要考虑到很多方面,首先要确认这个线程池所处理的任务是属于CPU密集型还是IO密集型或者属于混合型。对于CPU密集型一般线程池数量为CPU核数+1,+的这个1是充分利用CPU(如当某个线程出现空闲时或一个线程计算结束切换新任务时能够充分利用这部分资源),而对于IO密集型,一般设置为2N+1.但是这并不是绝对的,要考虑到IO的响应时间,如果响应时间比较长会导致CPU空闲的情况可以适当增加线程数。但即使是这种情况也并不是可以无限制的增大,因为还要考虑到IO的压力。如针对数据库,如果有过多的线程同时连接数据库使得数据库连接数过多会增大数据库的压力。这个在设置线程池大小时也要考虑进去。

猜你喜欢

转载自blog.csdn.net/yue_hu/article/details/80068991