参考文章:https://www.cnblogs.com/qiushuiyu-108/p/16940205.html
一、@Async
注解的使用
在使用spring框架中,可以非常简单方便的实现一个异步执行方法,具体只需要在启动类添加@EnableAsync
注解开启支持异步,然后在需要进行异步处理的方法上使用@Async
注解即可进行异步执行。
注意:想要异步执行,不能在一个类中直接调用本类中被@Async
注解标记的方法,本类中直接调用会同步执行,不会进行异步执行
主启动类
@EnableAsync//开启异步支持,也可以标记在被@Configuration注解标注的类上,效果一致
@SpringBootApplication
public class ApplicationTest{
....
}
使用实例:需要交给spring容器管理bean
@Component
public class MyAsyncService {
@Async//直接使用异步注解即可,默认使用的线程池就是自定义实现的线程池
public void testAsync(){
System.out.println("==== 我执行了 ====");
System.out.println("MyAsyncService.testAsync() = " + Thread.currentThread().getName());
}
}
测试执行:
/* 使用SpringBoot执行测试 */
@SpringBootTest(classes = ApplicationTest.class)
public class ApplicationTest1 {
@Resource
MyAsyncService myAsyncService;
@Test
void testTread(){
myAsyncService.testAsync();
System.out.println("结束.... " );
}
}
测试结果:
二、@Async
注解线程池的配置及使用
1、@Async默认线程池修改
对于修改@Async使用的默认线程池,我们可以使用实现AsyncConfigurer
接口,并重写getAsyncExecutor()方法,为其提供我们自己定义的线程池即可
具体示例:
import lombok.extern.slf4j.Slf