Spring Boot 中自定义线程池的正确使用姿势:定义、注入与最佳实践

文章目录

  • 线程池
    • [1. 定义线程池](#1. 定义线程池)
    • [2. 注入线程池](#2. 注入线程池)

线程池

1. 定义线程池

  • 定义线程池工具类value起别名
java 复制代码
@Component
public class ThreadUtil {

    @Bean("executorService")
    public ExecutorService executorService() {
        return new ThreadPoolExecutor(
                10,                    // 核心线程数
                30,                    // 最大线程数
                60, TimeUnit.SECONDS,  // 空闲线程存活时间
                new ArrayBlockingQueue<>(500), // 有界队列
                new ThreadFactory() {  // 自定义线程名
                    private final AtomicInteger index = new AtomicInteger(1);
                    @Override
                    public Thread newThread(Runnable r) {
                        return new Thread(r, "task-pool-" + index.getAndIncrement());
                    }
                },
                new ThreadPoolExecutor.CallerRunsPolicy() // 拒绝策略
        );
    }
}

2. 注入线程池

  • 注入线程池,要用@Qualifier来与value的值对应
  • @Resource()
java 复制代码
@Service
public class TaskService {

    @Resource(name = "executorService")
    private ExecutorService executorService;

    public void doTask() {
        executorService.execute(() -> {
            System.out.println("执行任务 → " + Thread.currentThread().getName());
        });
    }
}
  • @AutoWrite()
java 复制代码
@Service
public class TaskService {

    @Autowired
    @Qualifier("executorService")
    private ExecutorService executorService;

}
  • 构造器注入
java 复制代码
@Service
public class TaskService {

    private final ExecutorService executorService;

    public TaskService(@Qualifier("executorService") ExecutorService executorService) {
        this.executorService = executorService;
    }
}
相关推荐
AIFarmer18 小时前
在EV3上运行Python语言——环境设置
python·ev3
无尽的沉默18 小时前
SpringBoot整合Redis
spring boot·redis·后端
yunsr18 小时前
python作业3
开发语言·python
历程里程碑18 小时前
普通数组-----除了自身以外数组的乘积
大数据·javascript·python·算法·elasticsearch·搜索引擎·flask
曦月逸霜18 小时前
Python快速入门——学习笔记(持续更新中~)
笔记·python·学习
摸鱼的春哥18 小时前
春哥的Agent通关秘籍07:5分钟实现文件归类助手【实战】
前端·javascript·后端
喵手18 小时前
Python爬虫实战:采集菜谱网站的“分类/列表页”(例如“家常菜”或“烘焙”频道)数据,构建高可用的美食菜谱数据采集流水线(附CSV导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集菜谱网站数据·家常菜或烘焙频道·构建高可用食谱数据采集系统
喵手18 小时前
Python爬虫实战:硬核解析 Google Chrome 官方更新日志(正则+文本清洗篇)(附 CSV 导出)!
爬虫·python·爬虫实战·零基础python爬虫教学·csv导出·监控谷歌版本发布历史·获取稳定版更新日志
小邓睡不饱耶18 小时前
实战|W餐饮平台智能化菜品推荐方案(含Spark实操+算法选型+完整流程)
python·ai·ai编程·ai写作
草莓熊Lotso19 小时前
Qt 主窗口核心组件实战:菜单栏、工具栏、状态栏、浮动窗口全攻略
运维·开发语言·人工智能·python·qt·ui