任务执行 - TaskExecutor
概述
TaskExecutor 是 Spring 的任务执行抽象,提供了统一的异步任务执行接口。
核心能力矩阵
| 能力 | 核心类 | 解决的问题 | 使用频率 | 学习优先级 |
|---|---|---|---|---|
| 任务执行 | TaskExecutor | 异步任务执行 | ⭐⭐⭐ | 🟢 低 |
核心接口
主要功能
1. 基本任务执行
java
@Autowired
private TaskExecutor taskExecutor;
// 执行任务
taskExecutor.execute(() -> {
// 异步执行的任务
System.out.println("Task executed in: " + Thread.currentThread().getName());
});2. 带返回值的任务
java
@Autowired
private AsyncTaskExecutor asyncTaskExecutor;
// 提交带返回值的任务
Future<String> future = asyncTaskExecutor.submit(() -> {
return "Task result";
});
// 获取结果
String result = future.get();3. 线程池配置
java
@Bean
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(25);
executor.setThreadNamePrefix("MyExecutor-");
executor.initialize();
return executor;
}实现类
| 实现类 | 描述 | 使用场景 |
|---|---|---|
SimpleAsyncTaskExecutor | 简单异步执行器 | 简单场景,每个任务新建线程 |
ThreadPoolTaskExecutor | 线程池执行器 | 生产环境,性能要求高 |
WorkManagerTaskExecutor | JCA WorkManager | Java EE 环境 |
ConcurrentTaskExecutor | JDK Executor 包装 | 使用现有 Executor |
与 @Async 的关系
java
@Service
public class AsyncService {
@Async
public void asyncMethod() {
// 异步执行
}
@Async("customExecutor")
public void asyncWithCustomExecutor() {
// 使用指定的执行器
}
}使用场景
- 异步方法调用
- 定时任务执行
- 批量处理
- 事件异步处理