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;
    }
}
相关推荐
苍何16 分钟前
让 WorkBuddy 操控浏览器,干活有点猛啊1
后端
IT_陈寒33 分钟前
当Java的hashCode遇上Lombok,我的缓存被全清了
前端·人工智能·后端
zh路西法1 小时前
【PACE】面向永磁同步电机PMSM 执行器的参数辨识与能耗感知强化学习 Sim-to-Real
python·cma-es·pmsm·sim-to-real·issac·pace
XW1 小时前
常用提示词(Prompt)框架总结
后端
ServBay1 小时前
DeepSeek 再次崩了,DeepSeek V5正在路上?
后端·deepseek
后台模板学习1 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
2601_967987372 小时前
如何运行 Python 代码
python·最佳实践·脚本文件·代码运行·交互式环境
WiKiLeaks_successor2 小时前
重构Time库的抽象设计
python·重构
AI源码2 小时前
基于 Python 的短视频用户行为分析系统
开发语言·python
IT规划师2 小时前
编程术语中的同步与异步:从"等不等"到工程取舍
后端·面试