线程池的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

相关文章
|
机器学习/深度学习 编译器 C++
C++模板元模板实战书籍讲解第一章(顺序、分支与循环代码的编写)--前篇
C++模板元模板实战书籍讲解第一章(顺序、分支与循环代码的编写)--前篇
63 0
|
机器学习/深度学习 编译器 C++
C++模板元模板实战书籍讲解第一章(顺序、分支与循环代码的编写)--续篇
C++模板元模板实战书籍讲解第一章(顺序、分支与循环代码的编写)--续篇
93 0
|
存储 前端开发 Java
二十三.SpringCloudConfig源码-初始化配置
今天这篇文章我们来分析一下Spring Cloud Config 配置中心的源码,这应该是Spring Cloud Netflix的源码分析的最后一篇。下一个系列我将会继续分析Spring Cloud Alibaba相关组件的源码。Spring Cloud Config 基础使用请移步 《[配置中心Spring Cloud Config](https://blog.csdn.net/u014494148/article/details/117253831)》
|
Java
并发编程(十一)自定义线程池
并发编程(十一)自定义线程池
100 0
多线程顺序运行的 4 种方法,面试随便问!
多线程顺序运行的 4 种方法,面试随便问!
247 0
|
Java
线程池的7种创建方式,强烈推荐你用它...(7)
线程池的7种创建方式,强烈推荐你用它...(7)
88 0
线程池的7种创建方式,强烈推荐你用它...(7)
|
Java
线程池的7种创建方式,强烈推荐你用它...(3)
线程池的7种创建方式,强烈推荐你用它...(3)
118 0
线程池的7种创建方式,强烈推荐你用它...(3)
|
缓存 Java
线程池的7种创建方式,强烈推荐你用它...(2)
线程池的7种创建方式,强烈推荐你用它...(2)
109 0
线程池的7种创建方式,强烈推荐你用它...(2)
|
存储 缓存 资源调度
线程池的7种创建方式,强烈推荐你用它...(1)
线程池的7种创建方式,强烈推荐你用它...(1)
262 0
线程池的7种创建方式,强烈推荐你用它...(1)
|
Java
线程池的7种创建方式,强烈推荐你用它...(4)
线程池的7种创建方式,强烈推荐你用它...(4)
148 0
线程池的7种创建方式,强烈推荐你用它...(4)