异步方法调用使用场景:处理日志、发送邮件、发送短信。。。

关于@Async:

(1)Spring 3.0 以及以后版本中支持的@Async

(2)@Async修饰类,则该类所有方法都是异步的,@Async修饰方法,则该方法是异步的。

(3)只有@Async注解修饰的方法还不能够生效,还需要在SpringBoot的主程序Application中或对应的类上配置注解@EnableAsync才能够生效。

(4)@Async所修饰的函数不要定义为static类型,这样异步调用不会生效。


此Demo是模拟发邮件,我们网站的后台,给邮件服务器发送验证码让他发送到指定邮箱。然后立即通知用户,验证码已发送。不用等待邮件服务器完成后,才通知用户验证码已发送。假如邮件服务器给指定邮箱发送验证码失败,再通知用户,请重新获取验证码。

主程序Application

package com.example.springBootdemo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
/*** * @author luolei* @date 2018年10月28日*/
@SpringBootApplication
@EnableAsync //开启异步
public class SpringBootDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringBootDemoApplication.class, args);}
}

controller

package com.example.springBootdemo.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;import com.example.springBootdemo.service.impl.SendValidCodeServiceImpl;
/*** * @author luolei* @date 2019年1月30日*/
@RestController
/*@Controller
@ResponseBody*/
//@EnableAsync //开启异步
@RequestMapping("/sendValidCode")
public class SendValidCodeController {@Autowiredprivate SendValidCodeServiceImpl sendValidCodeService;@GetMapping("/send")//@RequestMapping("/send")public String SendValidCode() throws InterruptedException {System.out.println("1、后台服务器向邮件服务器请求:给XXX发送验证码...");sendValidCodeService.sendValidCode();sendValidCodeService.sendMesssage();return "success";}
}

service

package com.example.springBootdemo.service.impl;import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;@Service
public class SendValidCodeServiceImpl {@Asyncpublic void sendValidCode() throws InterruptedException{Thread.sleep(3000);System.out.println("2、邮件服务器操作:将验证码发送到XXX...");}@Asyncpublic void sendMesssage() throws InterruptedException{System.out.println("3、后台服务器提示用户:验证码已发送...");}}

效果

Spring注解 @Async 实现异步调用方法相关推荐

  1. java 异步调用 事务_深入理解Spring注解@Async解决异步调用问题

    序言:Spring中@Async 根据Spring的文档说明,默认采用的是单线程的模式的.所以在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的. 那么当多个任务的执行势必会相互影响. ...

  2. 注解@Async解决异步调用问题

    注解@Async解决异步调用问题 参考文章: (1)注解@Async解决异步调用问题 (2)https://www.cnblogs.com/mmzs/p/11557583.html 备忘一下.

  3. springboot 异步mysql_spring boot 使用@Async实现异步调用方法

    使用@Async实现异步调用 什么是"异步调用"与"同步调用" "同步调用"就是程序按照一定的顺序依次执行,,每一行程序代码必须等上一行代码 ...

  4. Spring Boot使用@Async实现异步调用:自定义线程池

    在之前的Spring Boot基础教程系列中,已经通过<Spring Boot中使用@Async实现异步调用>一文介绍过如何使用 @Async注解来实现异步调用了.但是,对于这些异步执行的 ...

  5. Spring Boot使用@Async实现异步调用:ThreadPoolTaskScheduler线程池的优雅关闭

    上周发了一篇关于Spring Boot中使用@Async来实现异步任务和线程池控制的文章:<Spring Boot使用@Async实现异步调用:自定义线程池>.由于最近身边也发现了不少异步 ...

  6. spring boot 学习(十一)使用@Async实现异步调用

    使用@Async实现异步调用 什么是"异步调用"与"同步调用" "同步调用"就是程序按照一定的顺序依次执行,,每一行程序代码必须等上一行代码 ...

  7. Spring Boot 中的异步调用

    Spring Boot 中的异步调用 通常我们开发的程序都是同步调用的,即程序按照代码的顺序一行一行的逐步往下执行,每一行代码都必须等待上一行代码执行完毕才能开始执行.而异步编程则没有这个限制,代码的 ...

  8. java 异步调用方法_java异步调用方法有哪些?如何实现异步调用?

    你知道java异步调用方法都有哪些吗?下面的文章内容,就对这方面的问题做了一下整理,一起来看看java异步调用的方法吧! 1.利用Spring的异步方法去执行 注:没有返回值 在启动类又或者是配置类加 ...

  9. SpringBoot异步调用方法

    SpringBoot异步调用方法 一.spring boot--使用异步请求,提高系统的吞吐量 https://blog.csdn.net/liuchuanhong1/article/details/ ...

最新文章

  1. tomcat自启动问题 jsvc的 使用
  2. 基于mcat开发智能合约应用(二)调用合约
  3. sharepoint数据库研究
  4. centos7-docker-网络配置
  5. php sesssion,php sesssion原理
  6. 045、JVM实战总结:动手实验:自己动手模拟出对象进入老年代的场景体验一下(上)
  7. poj1036GangstersDP
  8. 2021-07-05 页面的生命周期
  9. 一对一社交app源码开发关于社交系统中视频添加功能
  10. 在线QuartzCron定时任务表达式在线生成
  11. Go游戏框架初探《一》
  12. 虚拟机VMware 15安装教程
  13. linux重装声卡驱动,linux声卡驱动重装
  14. 中国广电即将放号,感受到压力的中国移动率先推出19元5G套餐
  15. Linux工作目录切换命令
  16. 基于比原链开发Dapp(二)-开发流程
  17. 《游戏人工智能》学习笔记3——7 用脚本写现实世界的行为树
  18. 心理学 | (1)焦虑症和恐惧症--一种认知的观点
  19. 收款码在线生成系统源码 无限制
  20. 石川: 主流多因子模型巡礼

热门文章

  1. Windows server2008 搭建ASP接口訪问连接oracle数据库全过程记录
  2. 浅谈对机器学习方法(决策树,SVM,knn最近邻,随机森林,朴素贝叶斯、逻辑回归)的理解以及用sklearn工具实现文本分类和回归方法...
  3. 如何处理服务器磁盘沾满
  4. Codeforces-741A-Arpa's loud Owf and Mehrdad's evil plan(找有向图环及最大公倍数计算)
  5. Spring集成activeMQ
  6. UIButton和UIimageView
  7. Linux开启服务器问题(李蕾问题)
  8. rvm的安装, 使用rvm, 安装ruby, 以及gem的使用 (转)
  9. 神经网络如何进行深度估计?
  10. Transformer在计算机视觉领域走到哪了?