如何设置线程池的线程数?


  合理的设置线程池的线程数需要针对不同的任务类型而定,任务类型可以分为cpu密集型、IO密集型和混合型。

1)cpu密集型

  cpu密集型指的是线程处理任务时,cpu参与计算的时间比较多,这种情况下,如果设置的线程数过多,会增加上下文的切换次数,带来额外的开销。

线程数的设定公式是:线程数=(cpu核心数+1)。

2)IO密集型

  IO密集型是指在处理任务时,IO过程所占用的时间较多,在这种情况下,线程数的计算方法可以分为两种:

  方法一:线程数=cpu核心数*2,cpu所占用时间不多,可让cpu在等待IO的时候去处理其他任务,充分利用cpu。

  方法二:线程等待时间比例越多,需要更多的线程,而线程cpu所占时间越多,则需要更少线程数。

      线程数=((线程等待时间+线程cpu时间)/线程cpu时间)*cpu核心数。

3)混合型

  对于混合型,可以将任务划分成cpu密集型任务与IO密集型任务,分别针对这两种任务使用不同的线程池去处理。  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM