SpringBoot @Async实现异步调用

如题所述

第1个回答  2022-07-20

异步调用是相对于同步调用的,同步调用是按照顺序进行执行任务,只有上一个任务执行完成下一个任务才能执行, 异步调用是指在按照顺序执行任务的过程中不需要等待任务结果的出现,就可以顺序执行下一个任务

异步处理的方式:

SpringBoot自身没有对异步调用做很大的变动,基本还是使用SpringMVC的@Async

注解 :在使用**@EnableWebMvc**注解的时候也可以开启异步调用,但是在SpringBoot中使用异步调用会使得SpringBoot的AutoConfig一部分功能失效。

定义一个或者多个线程池

我们使用 ThreadPoolTaskExecutor 创建线程池,其参数配置如下:

异步调用方法有两种一个是没有返回值的,一种是有返回值的,具体实现如下:

在多线程池的时候,我们需要在@Async()指定线程池名称**@Async("threadPoolTaskExecutor1")**

在单元测试用例中,注入Task对象,并在测试用例中执行 asyncMethodWithVoidReturnType_One 、 asyncMethodWithVoidReturnType_Two() 、 asyncMethodWithVoidReturnType_Three() 三个函数。

执行结果如下: