关于SpringBoot使用@Async的总结
程序员文章站
2022-03-06 13:01:03
目录springboot使用@async总结如下方式会使@async失效springboot实现异步(async)接口1. 启动类引入@enableasync注解2. 建立异步任务类3. 建立测试接口...
springboot使用@async总结
注意事项:
如下方式会使@async失效
1. 异步方法使用static修饰
2. 异步类没有使用@component注解(或其他注解)导致spring无法扫描到异步类
3. 异步方法不能与异步方法在同一个类中
4. 类中需要使用@autowired或@resource等注解自动注入,不能自己手动new对象
5. 如果使用springboot框架必须在启动类中增加@enableasync注解
6. 在async 方法上标注@transactional是没用的。 在async 方法调用的方法上标注@transactional 有效。
springboot实现异步(async)接口
1. 启动类引入@enableasync注解
@springbootapplication @enableasync public class application{ public static void main(string[] args) { springapplication.run(application.class, args); } }
2. 建立异步任务类
我们建了3个异步任务,分别延迟1s,2s,3s
@component public class asynctask { @async public void task1() throws interruptedexception{ long currenttimemillis = system.currenttimemillis(); thread.sleep(1000); long currenttimemillis1 = system.currenttimemillis(); system.out.println("task1任务耗时:"+(currenttimemillis1-currenttimemillis)+"ms"); } @async public void task2() throws interruptedexception{ long currenttimemillis = system.currenttimemillis(); thread.sleep(2000); long currenttimemillis1 = system.currenttimemillis(); system.out.println("task2任务耗时:"+(currenttimemillis1-currenttimemillis)+"ms"); } @async public void task3() throws interruptedexception{ long currenttimemillis = system.currenttimemillis(); thread.sleep(3000); long currenttimemillis1 = system.currenttimemillis(); system.out.println("task3任务耗时:"+(currenttimemillis1-currenttimemillis)+"ms"); } }
3. 建立测试接口
@restcontroller @requestmapping("/test") public class testcontroller { @autowired private asynctask asynctask; @requestmapping("/async") public string dotask() throws interruptedexception{ long currenttimemillis = system.currenttimemillis(); asynctask.task1(); asynctask.task2(); asynctask.task3(); long currenttimemillis1 = system.currenttimemillis(); return "task任务总耗时:"+(currenttimemillis1-currenttimemillis)+"ms"; } }
启动springboot服务,访问/test/async接口,能看到任务耗时只有1s
查看控制台,发现异步task也成功执行了!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
上一篇: Centos 7配置阿里云NTP
下一篇: Windows10配置阿里云NTP
推荐阅读