首页 > 其他分享 >你真的了解@Async吗?

你真的了解@Async吗?

时间:2023-11-17 10:11:05浏览次数:28  
标签:异步 自定义 了解 线程 注解 Async 真的 方法

使用场景:

开发中会碰到一些耗时较长或者不需要立即得到执行结果的逻辑,比如消息推送、商品同步等都可以使用异步方法,这时我们可以用到@Async。但是直接使用 @Async 会有风险,当我们没有指定线程池时,他会默认使用其Spring自带的 SimpleAsyncTaskExecutor 线程池,会不断的创建线程,当并发大的时候会严重影响性能。所以可以将异步指定线程池使用

简介:

@Async是Spring的注解,可以加在类或方法上。通俗的来讲,如果加上了这个注解,那么该类或者该方法在使用时将会进行异步处理,也就是创建一个线程来实现这个类或者方法,实现多线程。

线程池的执行顺序:

两种使用方式:

第一种:

使用的是Spring默认的线程池SimpleAsyncTaskExecutor。

接入步骤:

1.需要在@SpringBootApplication启动类或者@configure注解类上 添加注解@EnableAsync启动多线程注解。

2.在需要异步执行的方法上添加@Async注解。

默认的线程池配置:

如果需要修改默认的配置可以在yaml或者properties中添加,修改默认配置:

执行后会打印出你的执行线程名称:

第二种:(推荐使用)

自定义线程池,执行异步。

自定义线程池有如下模式,我们只介绍最后一种:

  • 重新实现接口AsyncConfigurer;
  • 继承AsyncConfigurerSupport;
  • 配置由自定义的TaskExecutor替代内置的任务执行器。

然后添加注解到对应的方法上并指定线程池:asyncExecutor

指定线程池的名称为自定义的线程池名称。

查看日志:

注意事项:

查到了@Async失效的几个原因:

  1. 注解@Async的方法不是public方法;
  2. 注解@Async的返回值只能为void或Future;
  3. 注解@Async方法使用static修饰也会失效;
  4. 启动类没加@EnableAsync注解;
  5. 调用方和@Async不能在一个类中;
  6. 在Async方法上标注@Transactional是没用的,但在Async方法调用的方法上标注@Transcational是有效的;

作者:京东零售 郭春元

来源:京东云开发者社区 转载请注明来源

标签:异步,自定义,了解,线程,注解,Async,真的,方法
From: https://www.cnblogs.com/Jcloud/p/17838035.html

相关文章

  • 你真的了解字符截取函数substr吗?php字符截取函数substr参数的6种情况。分别是:正正 负
    <?php$str='123456789abcd';echo'<br/>';echo'原字符:'.$str;echo'<br/>';//情况1正正++从指定位置开始截取3个echo'1正正substr($str,0,3):'.substr($str,0,3);//123echo'<br/>';//情况2......
  • GUI界面实现小学生口算题卡功能(一)| 简要了解GUI
    上课没认真听,下课不好好写。关于GUI,首先了解了一下什么是GUI:GUI(GraphicalUserInterface),图形用户界面。采用图形方式显示的计算机操作用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更容易接受。GUI和CLI(命令行界面)最大的不同是,GUI引入鼠标作为输......
  • C# httpClient.PostAsync时出现问题Result =“ {尚未计算}”
    返回错误1:Id=3129,Status=WaitingForActivation,Method="{null}",Result="{Notyetcomputed}"返回错误2:发生了一个或多个错误Oneormoreerrorsoccurred.atSystem.Threading.Tasks.Task.ThrowIfExceptional(BooleanincludeTaskCanceledExceptions)......
  • 了解一下知识付费系统的开发流程和关键技术点
    知识付费系统的开发既涉及到前端用户体验,又需要强大的后端支持和复杂的付费逻辑。在这篇文章中,我们将深入探讨知识付费系统的开发流程和关键技术点,并提供一些相关的技术代码示例。1.需求分析和规划:在着手开发知识付费系统之前,首先需要进行全面的需求分析和规划。明确系统的核心功......
  • Python3 协程 await async 相关的用法和笔记
    想要提供可以进行协程切换的awaitable,可以使用下面的方法:1任务taskasyncdeffunc():print("yesWait")task=asyncio.create_task(func())awaittask2协程对象,可以使asyncdef定义的协程函数(是否能触发切换不一定,要看函数内容)函数内可以利用asyncio.sl......
  • Excel做数据分析?是真的很强!
    当涉及到数据分析时,Excel无疑是一个功能强大且广泛应用的工具。它提供了丰富的功能和灵活性,使得用户可以进行各种复杂的数据处理和分析。在本文中,我将详细介绍Excel在数据分析领域的强大功能,包括数据整理、数据可视化、统计分析等方面,并且结合实际案例进行说明,以帮助读者更好地......
  • 深入浅出了解—冯·诺依曼体系结构
    一、什么是冯·诺依曼体系结构? 我们现代的计算机、服务器等设备。大部分都遵守冯·诺依曼体系。如下图就是我们常见的体系结构通常有一个输入设备、一个输出设备、存储器、运算器、控制器等。其中运算器和控制器等组成了我们熟知的cpu。二、深度理解冯·诺依曼体系结构的组成1.存......
  • 语音识别的未来已来:深入了解faster-whisper的突破性进展
    faster-whisper简介faster-whisper是基于OpenAI的Whisper模型的高效实现,它利用CTranslate2,一个专为Transformer模型设计的快速推理引擎。这种实现不仅提高了语音识别的速度,还优化了内存使用效率。faster-whisper的核心优势在于其能够在保持原有模型准确度的同时,大幅提升处理速度,这......
  • 【溶解度工具】上海道宁为您带来了解溶解度、分散性、扩散、色谱等问题的强大而实用的
      高度参数化的UNIFAC技术可以提供出色的预测COSMO-RS方法的量子化学基础可以在明确的公式中进行精确预测Abraham参数和NRTL-SAC也各有其独特的功能优秀的配方师会使用正确的工具来完成手头的工作  如果您必须只使用一种工具那么它应该是HSP......
  • 如何利用分析工具,让教师更了解学生,更精准地辅导他们学习成绩?
    教师利用分析工具来更好地了解学生,并提供更精准的辅导和指导,是教学实践中的重要一环。在本文中,我们将详细探讨如何利用分析工具,在不同层面上更精准地辅导学生学习成绩,包括数据收集、学生表现分析、个性化辅导等方面。数据收集多维度数据采集教师可以通过分析工具收集学生学习......