springboot创建线程池

发布时间 2023-12-01 12:01:08作者: xiaobaibao

1.线程池的配置:

@Configuration
public class ThreadPoolConfig {

@Bean(name = "myThreadPool") // 告诉你这个线程池的名字
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(10); // 核心线程数
executor.setMaxPoolSize(20); // 最大线程数
executor.setQueueCapacity(100); // 队列容量
executor.setKeepAliveSeconds(30); // 线程活动时间
executor.setThreadNamePrefix("MyThreadPool-"); // 线程名前缀

executor.setRejectedExecutionHandler(new java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy()); // 拒绝策略

executor.initialize(); // 初始化
return executor;
}
}

2.使用线程池

@Service
public class MyService {

private final ThreadPoolTaskExecutor taskExecutor;

  // 这个方法是为了加一层确定你引入的线程池是之前定义好的那个,如果你只定义过一个线程池的话此方法就不需要了,但是如果有多个这个就是必须
public MyService(@Qualifier("myThreadPool") ThreadPoolTaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}

public void executeTask() {
taskExecutor.execute(() -> {
// 你的任务代码
System.out.println("异步任务执行");
});
}
}

3.定义多个任务

public void executeTask() {
// 第一个任务
taskExecutor.execute(() -> {
// 你的任务代码
System.out.println("异步任务1执行");
});

// 第二个任务
taskExecutor.execute(() -> {
// 另一个任务代码
System.out.println("异步任务2执行");
});
}