Spring Boot中使用@Async

/ 0评 / 0

在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()
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注