1. 描述
??在一些数据统计类的场景中,前端展示很多数据,调用后端接口时,由于部分数据之前没有关联,为了缩短接口调用时长,就需要考虑异步并发编程。这里我只是简单了解并使用了async的基础用法,用以记录。后续根据技术的学习再来补充…
2. 代码实现
2.1 启动类加注解
@EnableAsync 开启异步支持
2.1 异步方法所在类加注解
@Service 注入
2.1 异步方法加注解
@Async 如果配置线程池来实现,此处用@Bean,具体使用找度娘
2.1 有返回值的异步方法
??整个接口需要异步方法的返回结果来完成
@Async
public Future<EnterpriseBean> getQyBaseInfo(String qyId) {
EnterpriseBean bean = enterpriseMapper.getQyById(qyId);
bean.setRegionName(bean.getRegionFirstName() + bean.getRegionSecondName());
return new AsyncResult<>(bean);
}
Future<EnterpriseBean> qyBaseInfo_Future = qrCodeAsync.getQyBaseInfo(qyId);
EnterpriseBean result = qyBaseInfo_Future.get(10, TimeUnit.SECONDS));
2.1 无返回值的异步方法
??这类方法只是完成某类计算或其他任务,整个接口不需要等待它的结果返回
@Async
public void countTableDataSums(String tableName) {
try {
Integer recordNums = dataControlSystemMapper.countTableRecordNums(tableName);
dataControlSystemMapper.updateResourceDetailByTableName(recordNums,tableName);
}catch (Exception e){
e.printStackTrace();
}
}
2.1 线程池的配置及使用
??后续更新
|