或许,你在Java后端添加异步过程时会这样处理,然后摇摇大摆、灰溜溜地闪,而实际的运行结果却并不是我们期望的那样。那么,现在就将试验结果记录如下,以便少走弯路。

  (一)在Controller层的公开接口直接添加@Async注解

  当前端调用该种接口时会立刻结束,意味着开始即结束,不会在乎该异步接口返回的数据,其实这种接口只适合前端下发命令,后续就不管后端的处理流程了,也不需要后端返回的对象。

  (二)在Controller层的私有接口直接添加@Async注解

  这种情况是,前端调用后端的公开接口并等待该接口返回,此时在该接口中调用了该层的添加了@Async注解的私有方法,也许你期待的是让后端接口立刻返回,让具体的处理过程放在@Async注解的私有函数中,可事实并没有达到你的效果,添加了@Async注解的私有函数依旧是同步过程,即使你在Controller层的类前面添加了@EnableAsync注解,也无济于事;所以,这种方式达不到异步的效果。我们可以通过日志来验证该过程,如下图所示:

  在上图中,我们看到先进入Controller层公开接口,然后进入带有@Async注解的私有方法,接着跳出,最后又回到Controller层公开接口,整个流程就是同步过程,此时的@Async注解没有效果。

  (三)在Service层的公开接口直接添加@Async注解

  在Controller层提供同步流程的接口,只是在该层中会调用Service层的异步接口,只需要在需要用异步流程完成任务的接口上方添加@Async注解即可,这种策略是可以实现我们的异步过程的,我们还是通过日志来验证该流程,如下图所示:

  在上图中,我们看到流程首先进入Controller层,然后立即跳出了Controller层,而Service层的异步接口就是后续完成的任务了,这样的流程已达到我们想要的异步过程了。

------20200116勉

最新文章

  1. Struts2 源码分析——调结者(Dispatcher)之action请求
  2. ROW_NUMBER() OVER() 用法
  3. rabbitmq 重复ACK导致消息丢失
  4. python走起之第四话
  5. C#创建XML文件并保存
  6. dp、sp 转换为 px 的工具类
  7. .net通用权限框架B/S (五)--WEB(3)组织机构
  8. java学习之三种常用设计模式
  9. ODI学习笔记2--ODI产品架构
  10. [置顶] How to create Oracle 11g R2 database manually in ASM?
  11. asp.net中通过注册表来检测是否安装Office(迅雷/QQ是否已安装)
  12. F - 小晴天老师系列——苹果大丰收
  13. AtCoder Regular Contest 071
  14. kafka 幂等生产者及事务(kafka0.11之后版本新特性)
  15. SQLServer之创建提交读
  16. VS2015创建ASP.NET应用程序描述
  17. [Go] golang连接redis测试
  18. 【XSY2731】Div 数论 杜教筛 莫比乌斯反演
  19. 产生10个随机数5-9之间 统计一个int类型的一维数组中有多少个在[min,max]之间的数
  20. 最短路算法--SPFA+嵌套map

热门文章

  1. Codevs 1205 单词反转(Vector以及如何输出string)
  2. 通俗易懂的ref和out区别
  3. js引入,js变量和运算符等
  4. [1天搞懂深度学习] 读书笔记 lecture I:Introduction of deep learning
  5. pytorch --Rnn语言模型(LSTM,BiLSTM) -- 《Recurrent neural network based language model》
  6. OSPF笔记——LSA及其字段,及其作用
  7. Linux 邮件服务
  8. 解决关闭SSH进程CobaltStrike自动关闭
  9. 关于macos升级到catalina之后cisco无法使用的问题
  10. Objective-C编程 — 并行编程