一、ThreadPoolExecutor
LinkedBlockingQueue 实现的,这个队列最度为 Integer.MAX_VALUE ,显然会导致OOM。
所 以实际通过 ThreadPoolExecutor 的7个参数,义线程池。
二、义线程池参数选择
对于CPU密集型任务,最程数是CPU线程数+1。
对于IO密集型任务,尽量多配点,可以是CPU线程数*2,或者CPU线程数/(1-阻塞系数)。
IO密集型,即该任务需要的IO,即的阻塞。
在单线程上运O密集型的任务会导致浪费的CPU运算能费在等待。
所以在IO密集型任务中使线程可以的加速程序运及时在单核CPU上,这种加速主要就是利被浪费掉的阻塞时间。
IO密集型时,分线程都阻塞,故需要多配置线程数:
参考公式:CPU核数 /(1 – 阻塞系数 )
阻塞系数在 0.8~0.9 之间
8 核 CPU:8/1 – 0.9 = 80个线程数
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!