Skip to content

任务执行 - 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线程池执行器生产环境,性能要求高
WorkManagerTaskExecutorJCA WorkManagerJava EE 环境
ConcurrentTaskExecutorJDK Executor 包装使用现有 Executor

与 @Async 的关系

java
@Service
public class AsyncService {
    
    @Async
    public void asyncMethod() {
        // 异步执行
    }
    
    @Async("customExecutor")
    public void asyncWithCustomExecutor() {
        // 使用指定的执行器
    }
}

使用场景

  • 异步方法调用
  • 定时任务执行
  • 批量处理
  • 事件异步处理

相关链接

基于 Apache 2.0 许可发布