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编辑  收藏  举报

导航