@Async注解在springboot项目中的使用

2023-11-04

众所周知,@Async注解是开启一个异步线程的执行,但在springboot项目中如何具体的使用这个注解,还需要一一分析,仔细研究如何能更好的使用@Async注解。

1、在项目启动类上添加@EnableAsync注解,如果没有这个注解而仅仅只有@Async注解,那么是无法开启异步线程的执行,大家可以动手操作下。

2、在类上或者方法上添加@Async注解,在类上添加,代表整个类下的方法都开启了异步线程执行(不建议这么做),我们只需要在需要的方法上开启注解即可,这样就会开启一个新的线程来执行此方法。如下图所示:

 3、在同一个类中我们如果想在普通方法中调用@Async注解的方法,这个时候是不生效,不能开启新的线程的,@Async注解的方法的调用线程依然是普通方法的线程。如下图所示:

 这种情况和spring的动态代理有关,类似于@Transactional直接的使用。如果想在普通方法中调用@Async注解的方法,可以把@Async方法抽取出来放到一个单独的Service类中,通过类调用即可。如下图所示:

 

注意:@Async修饰的方法必须是公有方法 

4、@Async注解的方法的返回值只能是void或者Future类型。当用别的类型做为返回值时,不会报错,但却不能返回查询结果。所以我们想在@Async注解的方法返回结果时,可以借用Future去做为返回结果。如下图所示:

 

 5、如果我们想给@Async注解的线程一个线程名,可以使用value属性。但value属性的值我们需要定义。如下图所示:

 

 @Async注解默认是一个一个开启线程的,默认开启的最大线程是8个。关于它的使用如果能够结合线程池使用,应该会达到更好的使用效果,关于怎么结合线程池使用,有熟悉的同僚可以在下方留言,大家一起学习。最后,关于@Async的基本使用,已经大概结束了,有什么不对的地方,欢迎指出。同时也欢迎大家共同讨论其注解的使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@Async注解在springboot项目中的使用 的相关文章

随机推荐

  • AI 绘画基础 - 细数 Stable Diffusion 中的各种常用模型 【 魔导士装备图鉴】

    AI 绘画新手魔导士在刚开始玩 Stable Diffusion 时总会遇到各种新的概念 让人困惑 其中就包括各种模型和他们之间的关系 魔法师入门得先认识各种法师装备 各种模型 让我们遇到问题知道使用何种装备来协助自己发挥更大的效果 saf
  • SpringBoot @JsonField注解格式化日期失效

    昨天在进行登陆测试返回数据格式时 前端显示的日期都是以标准时间格式显示的 因为后端数据库定义的datetime类型 实体定义的date类型 以json格式返回给前端后 日期都格式化为标准类型 一看这个问题 就想到 JsonField注解 直
  • C与C++的函数相互调用

    无法直接调用原因 C 和 C 的函数可以相互调用 但需要一些特殊的注意事项 因为它们有不同的编译和链接规则以及一些语法差异 链接规则 C 语言的链接器通常使用 C 标准的函数命名和调用约定 而 C 链接器使用 C 的函数命名和调用约定 这意
  • c 语言private用法,举例分析private的作用(c/c++学习)

    c 中private的用处 我知道我们可以用 public 中的值 把private中的数据给提出来 但是还是搞不懂private该怎么用 或者说在一个具体程序中 private有什么用 class fun public void setn
  • HTTP协议版本检测

    HTTP 2 0在2015年就已经正式发布了 但是现在大部分网站还在使用HTTP 1 1协议 具体怎么查看网站采用的是HTTP 1 1 还是HTTP 2 0呢 本篇就介绍几种检测HTTP协议版本的方法 所有的操作都是基于Chrome浏览器
  • Week 2 Git& Github: Branch

    首先进入git目录 建议通过windows powershell操作 git branch new branch 创建一个新分支 git checkout branch 跳转到指定分支 git checkout b branchname 创
  • Spring MVC Controller传递枚举值示例

    功能描述 本文将通过一个小示例 展示在请求参数中传递枚举值 枚举定义 角色类定义 public enum RoleEnum EMPLOYEE short 1 Employee MANAGER short 2 Manager private
  • echarts前后端交互数据_前后端交互技术有哪些

    我们都知道 一个完整的IT项目是由多个不同岗位的成员共同完成 包括UI设计 前端开发 后端开发 测试等 为了实现项目的完整性 前后端需要运用技术实现联通 不过 前后端交互技术有哪些 参加郑州Web前端培训班会学吗 且看小编的分析 目前常用的
  • Java常见算法(六)【省份数量- 分组算法:深度优先、广度优先、并查集 】

    文章目录 省份数量 经典的分组算法 1 深度优先遍历 2 广度优先 3 并查集 算法 实验源码 省份数量 经典的分组算法 https www bilibili com video BV1Jv411A7Ty p 34 比如现在有三个城市 A城
  • Ai-M61/62系列的固件烧录指导

    文章目录 前言 一 软硬件的准备 二 原始硬件接线 三 烧录软件的使用 联系我们 前言 本文介绍Ai M61 62系列模组 开发板的固件烧录 一 软硬件的准备 Ai M61 62系列模组或者开发板一个 Ai M61 62烧录软件 下载链接
  • 进程和计划服务管理

    一 进程和服务 服务 是在操作系统内部活依赖网络环境运行的一种软件组件提供特定的功能或服务 服务一般在后台运行 职责包括接受请求 处理数据 执行操作 服务可以是系统自带的 也可以是基于linux开发的应用程序 服务特点 1 服务可以通过端口
  • YouTube-8M: A Large-Scale Video Classification Benchmark

    Abstract Many recent advancements in Computer Vision are attributed to large datasets Open source software packages for
  • 基于Android studio 的rpg游戏大地图的绘制

    今天开始写第一篇博客 好激动呢 衷心希望自己能坚持下去 不说闲话了 我们马上开始 最近一直在做一个基于Android studio的rpg2D角色扮演游戏 虽然说这个游戏已经烂大街了 其中的逻辑也是有了很多准确的简便的解释 不过真正做起来还
  • 【c++迭代器模拟实现】

    目录 前言 一 STL初始 二 六大组件之迭代器 迭代器初始 迭代器的模拟实现 1 victor 正向迭代器 反向迭代器1 反向迭代器2 反向迭代器3 2 list 正向迭代器 反向迭代器 总结 前言 打怪升级 第52天 一 STL初始 什
  • Oracle如何查询和中止正在运行的JOB

    今天遇到一个问题 有一个JOB会一直不停的执行 不能按照设定的间隔来执行 通过查询相关资料发现原来如此 当一个oracle job运行时返回一个error时 oracle会再次设法执行它 第一次尝试是在一分钟后 第二次是在2分钟后 第三次是
  • 代码点和代码单元的简单理解

    简单来说 代码单元就是用来表示代码点的 char数据类型就是一个采用UTF 16编码表示Unicode码点的代码单元 那代码点是什么 就是在unicode编码中的每一个符号 在特殊符号没出现之前 每个unicode代码点 字符在内 可以用一
  • 数据结构【2019年408第41题】

    1 一个N长度的链表的为了按照题目的需求 我们观察可以发现可以将一个链表从中间分开然后逆置然后依次插入则我们大致的思路如下 1 将链表分为两段 L和L2 2 将L2逆置从顺的顺序变为反过来的顺序 3 将L和L2按照 L gt L2 gt L
  • 高通LK显示屏分辨率太大,下半部分显示异常-FB buff超了的问题

    问题解决 bootable bootloader lk include dev fbcon h define LOGO IMG OFFSET 12 1024 1024 改成 define LOGO IMG OFFSET 20 1024 10
  • 前端利用html2canvas+jspdf实现html转pdf

    公司业务的月报页面 要实现pdf下载 查了资料 大概有个方向 就是利用html2canvas把html转为图片 然后再生成pdf格式的文件实现了下载 核心代码 import html2canvas from html2canvas impo
  • @Async注解在springboot项目中的使用

    众所周知 Async注解是开启一个异步线程的执行 但在springboot项目中如何具体的使用这个注解 还需要一一分析 仔细研究如何能更好的使用 Async注解 1 在项目启动类上添加 EnableAsync注解 如果没有这个注解而仅仅只有