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

相关文章
|
7月前
|
Java C++
关于《Java并发编程之线程池十八问》的补充内容
【6月更文挑战第6天】关于《Java并发编程之线程池十八问》的补充内容
54 5
|
6月前
|
监控 安全 数据库
逆天改命!用自定义上下文管理器,让你的Python代码效率飙升
【7月更文挑战第7天】Python上下文管理器简化资源管理,通过自定义实现优雅控制。使用with语句自动执行资源获取和释放,确保异常安全。例如,FileContextManager类通过__enter__打开文件,__exit__关闭并处理异常。自定义上下文管理器可封装重复逻辑,增强功能如日志和监控,提升代码效率与质量。利用这一工具,代码更简洁、高效且易于维护。**
45 1
|
8月前
|
缓存 Java 数据库
Java并发编程学习11-任务执行演示
【5月更文挑战第4天】本篇将结合任务执行和 Executor 框架的基础知识,演示一些不同版本的任务执行Demo,并且每个版本都实现了不同程度的并发性。
80 4
Java并发编程学习11-任务执行演示
|
8月前
简便的方法开线程干活并且出现等待提示
简便的方法开线程干活并且出现等待提示
47 3
|
存储 缓存 并行计算
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(一)
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(一)
647 0
|
缓存 并行计算 算法
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(二)
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(二)
412 0
|
Java
并发编程(十一)自定义线程池
并发编程(十一)自定义线程池
120 0
|
Python
【Python零基础入门篇 · 21】:多线程的封装和使用、线程的同步、互斥锁、执行的任务有参数
【Python零基础入门篇 · 21】:多线程的封装和使用、线程的同步、互斥锁、执行的任务有参数
228 0
【Python零基础入门篇 · 21】:多线程的封装和使用、线程的同步、互斥锁、执行的任务有参数
|
存储 Java
还在为线程间上下文传递而烦恼,用TransmittableThreadLocal试试
还在为线程间上下文传递而烦恼,用TransmittableThreadLocal试试
594 0
|
Java
线程池的7种创建方式,强烈推荐你用它...(7)
线程池的7种创建方式,强烈推荐你用它...(7)
96 0
线程池的7种创建方式,强烈推荐你用它...(7)

热门文章

最新文章