SpringBoot - 异步任务 @EnableAsync,@Async
1.在启动类上添加@EnabnleAsync注解开启对异步任务的支持
//开启对异步任务的支持 @EnableAsync @SpringBootApplication public class Learn20221218Application { public static void main(String[] args) { SpringApplication.run(Learn20221218Application.class, args); } }
2.@Async 注解
可以使用在类上与方法上,使用在类上 这个类里面的全部方法都是异步的,使用在方法上 这个方法就是异步的
//必须注入到容器当中 @Service public class AsyncService { @Async public void async1(){ } @Async public void async2(){ } }
3.异步执行完毕与如何知道异步全部执行完毕
异步代码
@Service public class AsyncService { @Async public Future<String> async1(){ //<String> 可以是其它参数 return new AsyncResult<String>("Async1 执行完毕返回参数 param"); } @Async public Future<String> async2(){ return new AsyncResult<String>("Async2 执行完毕返回参数 param"); } }
业务逻辑代码
@Autowired AsyncService asyncService; public void index() throws InterruptedException { Future<String> stringFuture1 = asyncService.async1(); Future<String> stringFuture2 = asyncService.async2(); while(true){ if(stringFuture1.isDone() && stringFuture1.isDone()){ System.out.println("所有异步任务都执行完毕了"); break; } Thread.sleep(1000); } }
posted on 2022-12-30 15:03 Mikasa-Ackerman 阅读(131) 评论(0) 编辑 收藏 举报