一. 基本开发及配置
1.在Spring Boot 启动类添加注解
//开启异步调用 @EnableAsync
2.在需要使用异步调用的方法头上添加注解
@Async
3.需要取得异步计算方法的结果
添加注解 @Async 的方法返回值写成:
@Async public Future<ApiResult> doTaskOne() throws Exception { log.info("开始做任务"); //业务逻辑 ApiResult apiResult = ApiResult.build(Code.Code_Success.getName(), Code.Code_Success.getValue()); return new AsyncResult<>(apiResult); }
通过调用以上方法,获取结果
Future<ApiResult> future = doTaskOne(); //判断任务是否执行完成 future.isDone(); //获取执行结果 ApiResult apiResult = future.get();
4.自定义配置线程池(非必须)
添加下面的配置类
@Slf4j @Configuration public class TaskExecutorConfig { /** * 自定义异步线程池 * @return */ @Bean public AsyncTaskExecutor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setThreadNamePrefix("结账-Executor"); executor.setMaxPoolSize(10); // 设置拒绝策略 executor.setRejectedExecutionHandler(new RejectedExecutionHandler() { @Override public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { // ..... } }); return executor; } }
执行 加了注解 @Async 的方法,可以看到控制台的打印信息