Java 并发之线程池的使用(ThreadPoolExecutor)

前言

"池化"是软件开发中的一种思想,比如常见的数据库连接池;在高并发场景下合理使用线程池能显著提高 CPU 运行效率,从而提升软件使用体验。

一、Java 中的线程池

JDK 1.5 版本起,在 java.util.concurrent 包下 Executors 类提供了创建线程池的方法
Executors类
通过查看源码可以看到,内部均由 ThreadPoolExecutor 类进行实现
ThreadPoolExecutor
ThreadPoolExecutor规范
既然如此,我们就重点分析下 ThreadPoolExecutor 类的相关参数

参数说明
corePoolSize核心线程数
maximumPoolSize最大线程数
keepAliveTime存活时间
TimeUnit时间单位
BlockingQueue阻塞队列
ThreadFactory线程工厂
RejectedExecutionHandler拒绝策略

阻塞队列

阻塞队列

拒绝策略

拒绝策略

二、使用场景

场景一

快速响应用户请求:比如一个查询接口需要多次数据库查询操作,中间可能还存在系统间的网络请求服务,针对这种情况应使用不存储元素的阻塞队列,通过增加线程数,快速处理任务。

场景二

快速处理批量任务:比如后台系统中常见的 Excel 解析存储,批量数据入库等耗时操作,不追求快速响应结果的场景,

参考资料

Java线程池实现原理及其在美团业务中的实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值