本文已经收录自 springboot-guide : https://github.com/Snailclimb/springboot-guide (Spring Boot 核心知识点整理。 基于 Spring Boot 2.19+。)

新手也能看懂的 SpringBoot 异步编程指南

通过本文你可以了解到下面这些知识点:

  1. Future 模式介绍以及核心思想
  2. 核心线程数、最大线程数的区别,队列容量代表什么;
  3. ThreadPoolTaskExecutor 饱和策略;
  4. SpringBoot 异步编程实战,搞懂代码的执行逻辑。

Future 模式

异步编程在处理耗时操作以及多任务处理的场景下非常有用,我们可以更好的让我们的系统利用好机器的 CPU 和 内存,提高它们的利用率。多线程设计模式有很多种,Future模式是多线程开发中非常常见的一种设计模式,本文也是基于这种模式来说明 SpringBoot 对于异步编程的知识。

实战之前我先简单介绍一下 Future 模式的核心思想 吧!。

Future 模式的核心思想是 异步调用 。当我们执行一个方法时,假如这个方法中有多个耗时的任务需要同时去做,而且又不着急等待这个结果时可以让客户端立即返回然后,后台慢慢去计算任务。当然你也可以选择等这些任务都执行完了,再返回给客户端。这个在 Java 中都有很好的支持,我在后面的示例程序中会详细对比这两种方式的区别。

SpringBoot 异步编程实战

如果我们需要在 SpringBoot 实现异步编程的话,通过 Spring 提供的两个注解会让这件事情变的非常简单。

  1. @EnableAsync:通过在配置类或者Main类上加@EnableAsync开启对异步方法的支持。
  2. @Async 可以作用在类上或者方法上,作用在类上代表这个类的所有方法都是异步方法。

1. 自定义 TaskExecutor

很多人对于 TaskExecutor 不是太了解,所以我们花一点篇幅先介绍一下这个东西。从名字就能看出它是任务的执行者,它领导执行着线程来处理任务,就像司令官一样,而我们的线程就好比一只只军队一样,这些军队可以异步对敌人进行打击

最新文章

  1. Flux 普及读本
  2. 移动应用开发测试工具Bugtags集成和使用教程
  3. 2015年12月01日 GitHub入门学习(三)GitHub创建仓库
  4. ajax读取XML文本(如读取城市)
  5. iOS 使用UIView的一种有效方法
  6. SequoiaDB版本升级及导入导出工具说明
  7. SVG动画实践篇-模拟音量高低效果
  8. 常用PHP函数整理
  9. angular指令ng-class巧用
  10. Ionic 常用组件解析
  11. c# typeof 与 GetType 作用与区别
  12. 242. Valid Anagram(leetcode)
  13. java 接口测试,使用excel做数据驱动(二)
  14. JMS基础篇(二)
  15. Flask上下文管理源码分析 ——(3)
  16. 牛客网PAT乙级(Basic Level)真题-数字分类 (20)
  17. wordpress模板里加keywords和description
  18. python私有公有属性
  19. Sequelize-nodejs-3-model definition
  20. 2008ZJOI树的统计

热门文章

  1. Imageio: 'ffmpeg-win32-v3.2.4.exe' was not found on your computer; downloading it now.
  2. mybatis if判断两个值是否相等存在的坑啊
  3. Sublime Text 3 中实现编译C语言程序
  4. CentOS升级内核方法
  5. 07 (OC)* XIB原理和Xib、storyBoard、代码的优缺点
  6. 主动降噪技术(ANC)的前生今世--概念历史
  7. Falsk中的Request、Response
  8. Mac搭建pyhton+selenium+pycharm实现web自动化测试
  9. JDK 13 都已经发布了,Java 8 依然是最爱
  10. opencv调整图像亮度对比度