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执行");
});
}
标签:springboot,创建,任务,线程,executor,taskExecutor,ThreadPoolTaskExecutor,public From: https://www.cnblogs.com/baoguiying/p/17869415.html