Spring Boot中的@Async注解详解
    		       		warning:
    		            这篇文章距离上次修改已过427天,其中的内容可能已经有所变动。
    		        
        		                
                @Async 是Spring提供的一个用于创建异步任务的注解,它可以使用于方法上,在不阻塞当前线程的情况下执行耗时任务或者调用其他服务。
在Spring Boot中使用@Async注解,你需要做以下几步:
- 在启动类上添加@EnableAsync注解来启用异步方法执行的功能。
- 在需要异步执行的方法上添加@Async注解。
- 确保异步方法的调用者和被调用者之间不形成循环依赖。
- 异步方法的返回类型必须是Future、CompletableFuture或ListenableFuture类型,以便支持异步回调。
示例代码:
// 启动类
@SpringBootApplication
@EnableAsync // 启用异步支持
public class AsyncApplication {
    public static void main(String[] args) {
        SpringApplication.run(AsyncApplication.class, args);
    }
}
 
// 异步任务的执行服务
@Service
public class AsyncService {
 
    @Async
    public Future<String> executeAsyncTask() {
        // 模拟耗时操作
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return new AsyncResult<>("异步任务执行完毕");
    }
}
 
// 控制器
@RestController
public class AsyncController {
 
    @Autowired
    private AsyncService asyncService;
 
    @GetMapping("/async")
    public String startAsyncTask() throws ExecutionException, InterruptedException {
        Future<String> future = asyncService.executeAsyncTask();
        return future.get(); // 等待异步任务执行完毕并返回结果
    }
}在这个例子中,AsyncService 类中的 executeAsyncTask 方法被标记为异步方法,该方法将在不阻塞主线程的情况下执行。AsyncController 的 startAsyncTask 方法调用了异步服务,并通过 Future.get() 方法获取异步执行的结果。
评论已关闭