线程池工作队列饱和策略

合理配置线程池
想要合理的配置线程池首先需要分析任务特性:CPU密集型任务、IO密集型任务、混合型任务 .

CPU密集型任务:尽量使用较小的线程池,一般为CPU核心数+1。CPU密集型任务的CPU使用率很高,过多的线程数运行只能增加上下文切换的次数,因此会带来额外的开销。

IO密集型任务:使用稍大的线程池,一般为2*CPU核心数。IO密集型任务CPU使用率并不高,可以让CPU在等待IO的时候去处理别的任务,充分利用CPU。

混合型任务:可以将任务分成IO密集型和CPU密集型任务,然后分别用不同的线程池去处理。只要分完之后两个任务的执行时间相差不大,那么就会比串行执行高效。如果划分之后两个任务执行时间相差甚远,那么最终的时间仍然取决于后执行完的任务,而且还要加上任务拆分与合并的开销。

https://juejin.im/post/6844903862063595528

https://blog.csdn.net/lixwjava/article/details/51813032
https://blog.csdn.net/wang_rrui/article/details/78541786
https://www.jianshu.com/p/71804d2511bc

https://www.jianshu.com/p/06a23b0dcd22

https://www.jianshu.com/p/704a6c5d337c

posted @ 2019-08-10 21:06  guardWei  阅读(589)  评论(0编辑  收藏  举报