ThreadPoolTaskExecutor是Spring Framework中的一个类,用于在应用程序中执行异步任务。它使用Java中的线程池来管理任务的执行。使用方法如下:
1、在配置文件中配置ThreadPoolTaskExecutor,包括线程池大小、队列大小等参数。
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ThreadPoolExecutor;
/**
* 线程池配置
*/
@Configuration
@EnableAsync
public class ThreadPoolConfig {
// 核心线程数
private int corePoolSize = 10;
// 最大线程数
private int maxPoolSize = 50;
// 队列最大长度
private int queueCapacity = 500;
// 线程池维护线程所允许的空闲时间
private int keepAliveSeconds = 300;
// 线程名称
private String threadNamePrefix = "TASK_EXECUTOR-";
/**
* 定长线程池
*
* @return
*/
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setThreadNamePrefix(threadNamePrefix);
taskExecutor.setMaxPoolSize(maxPoolSize);
taskExecutor.setCorePoolSize(corePoolSize);
taskExecutor.setQueueCapacity(queueCapacity);
taskExecutor.setKeepAliveSeconds(keepAliveSeconds);
// 拒绝策略
taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return taskExecutor;
}
}
2、在需要执行异步任务的类中注入ThreadPoolTaskExecutor,调用ThreadPoolTaskExecutor的execute()方法来执行任务。
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
public void executeAsyncTask() {
taskExecutor.execute(() -> {
// 任务代码
});
}