1、@Async介绍

在Spring中,基于@Async标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作

例如, 在某个调用中,需要顺序调用 A, B, C三个过程方法;如他们都是同步调用,则需要将他们都顺序执行完毕之后,方算作过程执行完毕; 如B为一个异步的调用方法,则在执行完A之后,调用B,并不等待B完成,而是执行开始调用C,待C执行完毕之后,就意味着这个过程执行完毕了。

2、应用场景

Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3.x之后,就已经内置了@Async来完美解决这个问题,本文将完成介绍@Async的用法。

3、 @Async调用中的事务处理机制

在@Async标注的方法,在其调用数据库操作之时,将无法产生事务管理的控制,原因就在于其是基于异步处理的操作。

那该如何给这些操作添加事务管理呢?可以将需要事务管理操作的方法放置到异步方法内部,在内部被调用的方法上添加@Transactional.

例如:  方法A,使用了@Async/@Transactional来标注,但是无法产生事务控制的目的。

方法B,使用了@Async来标注,  B中调用了C、D,C/D分别使用@Transactional做了标注,则可实现事务控制的目的。

最新文章

  1. C++求一个十进制的二进制中1的个数
  2. 【C++】DDX_Control、SubclassWindow和SubclassDlgItem的区别
  3. wex5 教程 之 图文讲解 考题模块框架设计
  4. apache下自定义404错误页面
  5. iOS开发——UI篇&九宫格算法
  6. c语言typedef关键字的理解
  7. 导出Excel帮助类
  8. yii 使用renderPartial调用另外一个控制器的视图
  9. Java网络编程-对象编解码方案、优劣对照
  10. 【JSP】JSP Action动作标签
  11. Davinci DM6446开发攻略——LINUX GPIO驱动源码移植
  12. 你真的懂redis的数据结构了吗?redis内部数据结构和外部数据结构揭秘
  13. python中赋值,深拷贝,浅拷贝区别
  14. 亚马逊IOT-SDK,线程池数
  15. angular2的ngfor ngif指令嵌套
  16. 剑指OFFER例题——从尾到头打印链表
  17. 升级framework4.0后form认证票据失效的问题
  18. Newtonsoft.Json 序列化小写首字母
  19. class装载原理
  20. uva-784-水题-搜索

热门文章

  1. Salesforce LWC学习(四十二) getRecordNotifyChange已弃用
  2. 爬虫Charles安装破解使用教程
  3. STM32F4寄存器初始化:PWM输出
  4. 分布式共识算法随笔 —— 从 Quorum 到 Paxos
  5. 07#Web 实战:仿 GitHub 个人主页项目拖拽排序
  6. PostgreSQL 绑定变量浅析
  7. AirTest
  8. 仿 MVC 三大特性
  9. 结合代码和内存变化图一步步弄懂JVM的FullGC
  10. 苹果iPhone 日历查询功能异常