java并发编程(12)– 线程池 实际?产使?哪?个线程池 怎么设置

一、ThreadPoolExecutor

LinkedBlockingQueue 实现的,这个队列最度为 Integer.MAX_VALUE ,显然会导致OOM。

所 以实际通过 ThreadPoolExecutor 的7个参数,义线程池。

 

二、义线程池参数选择

对于CPU密集型任务,最程数是CPU线程数+1。

对于IO密集型任务,尽量多配点,可以是CPU线程数*2,或者CPU线程数/(1-阻塞系数)。

java并发编程(12)-- 线程池 实际?产使?哪?个线程池 怎么设置

 

IO密集型,即该任务需要的IO,即的阻塞。

单线程上运O密集型的任务会导致浪费的CPU运算能费在等待

所以在IO密集型任务中使线程可以的加速程序运及时在单核CPU上,这种加速主要就是利被浪费掉的阻塞时间。

 

IO密集型时,分线程都阻塞,故需要多配置线程数:

参考公式:CPU核数 /(1 – 阻塞系数 )

阻塞系数在 0.8~0.9 之间

8 核 CPU:8/1 – 0.9 = 80个线程数

 

 

 

 

 

 

来源:软件工程小施同学

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月6日
下一篇 2021年1月6日

相关推荐