线程池的7种创建方式,强烈推荐你用它...(8)

简介: 线程池的7种创建方式,强烈推荐你用它...(8)

究竟选用哪种线程池?


经过以上的学习我们对整个线程池也有了一定的认识了,那究竟该如何选择线程池呢?

我们来看下阿里巴巴《Java开发手册》给我们的答案:


【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。

说明:Executors 返回的线程池对象的弊端如下:


1) FixedThreadPool 和 SingleThreadPool:允许的请求队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM。


2)CachedThreadPool:允许的创建线程数量为 Integer.MAX_VALUE,可能会创建大量的线程,从而导致 OOM。


所以综上情况所述,我们推荐使用 ThreadPoolExecutor 的方式进行线程池的创建,因为这种创建方式更可控,并且更加明确了线程池的运行规则,可以规避一些未知的风险。

总结


本文我们介绍了线程池的 7 种创建方式,其中最推荐使用的是 ThreadPoolExecutor 的方式进行线程池的创建,ThreadPoolExecutor 最多可以设置 7 个参数,当然设置 5 个参数也可以正常使用,ThreadPoolExecutor 当任务过多(处理不过来)时提供了 4 种拒绝策略,当然我们也可以自定义拒绝策略,希望本文的内容能帮助到你。原创不易,觉得不错就点个赞再走吧!


参考 & 鸣谢


https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html

https://www.cnblogs.com/pcheng/p/13540619.html

相关文章
|
5月前
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
|
5月前
|
Java 数据库
线程池的原理和基本使用~
线程池的原理和基本使用~
|
缓存 Java
线程池的类型有哪些?适用场景?第二篇
线程池的类型有哪些?适用场景?第二篇
76 0
|
缓存 并行计算 算法
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(二)
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(二)
304 0
|
存储 缓存 并行计算
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(一)
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(一)
559 0
|
Java
并发编程(十一)自定义线程池
并发编程(十一)自定义线程池
94 0
|
编译器 Go 开发者
包使用注意事项和细节(1)|学习笔记
快速学习包使用注意事项和细节(1)
118 0
包使用注意事项和细节(1)|学习笔记
多线程顺序运行的 4 种方法,面试随便问!
多线程顺序运行的 4 种方法,面试随便问!
232 0
|
Java
线程池的7种创建方式,强烈推荐你用它...(7)
线程池的7种创建方式,强烈推荐你用它...(7)
83 0
线程池的7种创建方式,强烈推荐你用它...(7)
|
Java
线程池的7种创建方式,强烈推荐你用它...(5)
线程池的7种创建方式,强烈推荐你用它...(5)
161 0
线程池的7种创建方式,强烈推荐你用它...(5)