@Async 使用和失效情况
因业务需要,经常会遇到主线程中包含其他关联业务,然关联业务的执行结果对主线程的返回结果没有直接影响或无影响。此时,能让主线程更顺畅的执行,并给客户带来好的客户体验,我们一般会将该关联业务做异步处理或类似的处理(如:消息队列),本文记录自己在项目中使用异步服务的相关经历,以备后期查询使用!
一、Springboot 使用异步任务
1、SpringBootApplication启动类添加@EnableAsync注解;
2、@Async使用
(1)类或者方法中使用@Async注解,类上标有该注解表示类中方法都是异步方法,方法上标有该注解表示方法是异步方法;
(2)@Async(“threadPool”),threadPool为自定义线程池,这样可以保证主线程中调用多个异步任务时能更高效的执行。
3、实例、分析
开启异步服务
@SpringBootApplication
@EnableApolloConfig
@EnableAsync
@ComponentScan(basePackages = {"com.zts"})
public class UserMgmtApplication {
public static void main(String[] args) {
SpringApplication.run(UserMgmtApplication.class, args);
}
}
定义异步类或方法:如果异步方法需要返回值,可以用Future接收