一.使用线程池的两个关键点
1.尽量减少线程切换和管理的开支
所以使用的时候要求线程数尽量少,这样可以减少线程切换和管理的开支。
2. 最大化利用cpu。
这个点要求尽量多的线程数,最大化的利用cpu
二.对不同的应用场景的处理策略
1.耗时短的场景
这个时候尽量减少线程数,如果保证完成任务就行,如果线程太多增加了线程上下文切换的时间,效率减低。
2.耗时长的场景
<1>cpu类型
这种业务时间长集中在计算操作上,也就是计算密集型任务的线程数不宜太多,再多也没用,cpu没空啊。
<2>IO类型
线程数应该多点,充分利用cpu,应该io操作不占用cpu,应该多点线程在跑,不要让cpu停下来空闲。
3.高并发量
<1>低耗时,建议线程数少些,保证并发量就行,可以设置为CPU核数+1
<2>高耗时,首先看看数据能不能做缓存,或者加服务器,加处理任务单元。
4.低并发量
<1>高耗时,建议多线程,保证有空闲线程去处理任务.