SpringBoot使用@Async异步调用方法

有时间一些比较耗时的方法需要使用异步调用,之前会自己维护一个线程池,然后异步调用,但是在Spring环境下可以一个@Async轻松搞定。

SpringBoot要使用@Async需要以下两个步骤:

1.使用@EnableAsync开启异步;

2.定义Spring组件,使用@Component和@Async;

示例:

使用@EnableAsync开启异步:

SpringBoot使用@Async异步调用方法_第1张图片

定义Spring组件,使用@Component和@Async:

SpringBoot使用@Async异步调用方法_第2张图片

测试用的Controller:

SpringBoot使用@Async异步调用方法_第3张图片

启动项目,执行结果:


异步方法执行成功,可以看到有个日志打印出来了,这个是Spring打印的日志,因为我们没有指定异步执行的executor,在第一次执行的时候会找不到executor,会返回null,由Spring默认的executor去执行,这个以后有时间再记录。

其实异步注解代理的方法可以有一个返回值Future,可以用isCancelled判断异步任务是否取消,isDone判断任务是否执行结束,get获取返回结果。

但是有一个要注意的是在使用不当的时候这个@Async注解会失效,这个在后面一篇博客会介绍:

SpringBoot使用@Async注解失效分析

你可能感兴趣的:(spring,boot)