在Spring Boot中,我们只需要通过使用@Async注解就能简单的将原来的同步函数变为异步函数。
为了让@Async注解能够生效,还需要在Spring Boot的主程序中配置@EnableAsync,如下所示:
@SpringBootApplication
@EnableAsync
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
注:
@Async所修饰的函数不要定义为static类型,这样异步调用不会生效
那么我们如何判断上述三个异步调用是否已经执行完成呢?我们需要使用Future来返回异步调用的结果。
@Async
public Future<String> doTaskOne() throws Exception {
System.out.println("开始做任务一");
long start = System.currentTimeMillis();
Thread.sleep(random.nextInt(10000));
long end = System.currentTimeMillis();
System.out.println("完成任务一,耗时:" + (end - start) + "毫秒");
return new AsyncResult<>("任务一完成");
}
简单的调用案例如下:
@Test
public void test() throws Exception {
Future<String> task1 = task.doTaskOne();
task1.isDone()
}