menbbo

导航

 

  合理的设置线程池的线程数需要针对不同的任务类型而定,任务类型可以分为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密集型任务,分别针对这两种任务使用不同的线程池去处理。  

posted on 2020-07-14 16:37  menbbo  阅读(2078)  评论(0编辑  收藏  举报