spring boot(17)-@Async异步

Spring Boot 合理使用 @Async 注解开启异步 Spring Boot 使用 @Async 注解 阅读详情

验证码的异步机制


上一篇讲过可以用邮件发验证码,通常我们在某网站发验证码时,首先会提示验证码已发送,请检查邮箱或者短信,这就是图中的1和3。然而此时查看邮箱或短信可能并没有收到验证码,往往要过几秒种才真正收到,这就是图中的2和4。2和4所消耗的时间比1和3要多,如果是同步,先执行4后执行3,那么这个请求将一直占用后台服务器。如果是异步,可以在第一时间通知用户已发送,并释放请求,而完全不用去管2和4的执行过程。如果2和4执行不成功怎么办?在验证码提示消息结尾,我们经常可以看到:”如果你在XXX秒钟之内没有收到验证码,请重发“

@Async和@EnableAsync 实现异步

控制层
	@GetMapping("/async")
	public String test1() throws InterruptedException {
		helloService.task1();
		helloService.task2();
		System.out.println("释放请求");
		return "ok";
	}
服务层
	@Async
	public void task1() throws InterruptedException{
		Thread.sleep(2000);
		System.out.println("完成任务1");
	}
	@Async
	public void task2() throws InterruptedException{
		Thread.sleep(1000);
		System.out.println("完成任务2");
	}
这是在一个控制层中调用了两个服务层的方法,任务1需要执行2秒时间,任务2需要执行1秒时间。和普通方法的唯一区别就是异步方法上加了@Async

上图是执行结果 ,这是同步。如果要让@Async异步生效还需要在配置类中开启异步,如下
@EnableAsync
@SpringBootApplication
再次执行

执行顺序和前面完全颠倒,在第一时间就释放了请求,任务2和任务1是同时执行的,但是任务2时间短,所以比任务1先执行完。
Spring Boot异步编程:使用@Async实现异步方法调用(附代码示例) 本文介绍了Spring Boot中使用@Async注解实现异步编程的方法。异步编程通过不阻塞主线程来提升程序性能,特别适合处理耗时操作。文章详细讲解了如何通过@EnableAsync启用异步支持,使用@Async标注异步方法,并通过CompletableFuture获取执行结果。同时指出了异步调用可能失效的常见原因(如未启用异步支持、类未被Spring管理、同类方法调用等)及解决方案。最后提供了一个完整的代码示例,帮助开发者快速掌握Spring Boot异步编程的实现技巧。 阅读详情

相关推荐

单细胞分析避坑指南:你的Harmony批次矫正真的做对了吗?

本文深入探讨了单细胞转录组分析中Harmony批次矫正的正确使用方法,解析了其工作原理及常见误区。通过详细参数调优指南和实战案例,帮助研究者避免过度矫正,确保生物学信号的有效保留。特别关注Harmony在单细胞数据分析中的关键参数设置和结果验证方法。

weixin_31099291的博客 299

Springboot发送邮箱验证码(QQ,163)

SpringBoot异步发送验证码,QQ,163通用。

weixin_45751763的博客 830

Cgroup对进程所占用的CPU与内存资源同时进行限制的测试

测试环境:Ubuntu。处理器数量:1CPU。内存大小:2048MB。 以下是测试程序mem_cpu_test.c的代码。 将mem_cpu_test.c编译为可以运行的程序mem_cpu_test。 运行程序,并用top命令查看mem_cpu_test所占用的系统资源情况,可以看到,mem_cpu_test使用了50%左右的内存资源,也就是1000MB左右,并占用了接近全部的CPU资源。 关闭以上的程序后,在Cgroup子系统memory和cpu下分别创建进程组test1和test2。 并设置tes

qq_44998067的博客 1154

Springboot异步发送邮件验证码

所需maven依赖 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</ver...

chengweimam的博客 491

深入解析STM32H743双精度FPU:从配置误区到三角函数加速技巧

本文深入解析STM32H743双精度FPU的配置与优化技巧,涵盖常见误区、三角函数加速及飞控系统应用。通过实测数据展示如何利用FPU提升数学运算效率,特别适合工业控制、无人机飞控等高精度实时应用场景。

weixin_29190651的博客 641

Megatron-LM深度解析:万亿参数大模型的3D并行训练之道

训练框架,采用创新的"层内模型并行"设计,通过将Transformer层的计算拆分到多个GPU上并行执行,显著提升训练效率。该系统支持3D并行策略(数据并行、张量并行、流水线并行)和序列并行等新技术,成功应用于训练5300亿参数的MT-NLG模型。相比DeepSpeed、TPU GSPMD等框架,Megatron-LM在NVIDIA GPU上展现出卓越性能,并与TensorRT等工具深度集成,形成从训练到部署的完整解决方案。该项目持续演进,已成为大模型训练的重要基准。

数据与算法架构提升之路专栏 2098

深入解析SpringBoot中@Async注解原理

SpringBoot的@Async注解原理解析

AE86的博客 4530

基于Python爬虫+词云图+情感分析对某东上完美日记的用户评论分析

随着互联网和社交媒体的发展,用户评论成为了消费者表达自己意见和情感的主要途径之一。对于企业来说,深入了解用户对其产品或服务的看法可以帮助他们更好地了解市场需求、产品改进的方向,以及消费者的情感倾向。因此,对用户评论进行分析已经成为了市场研究和商业决策的重要手段之一。

m0_64336780的博客 1万+

SpringBoot 异步任务-使用@Async注解

常见的高并发方案 异步,削峰填谷 缓存,缓存相对稳定高频热点数据 并行,缩短业务响应时间 优化你的业务代码 限流和降级,保护你的核心服务在高并发下能正常工作 异步场景 关联业务的执行结果对主线程的返回结果没有直接影响或无影响。此时,能让主线程更顺畅的执行,并给客户带来好的客户体验,我们一般会将该关联业务做异步处理或类似的处理(如:消息队列) @Async简介 该工具可以为你的应用提供方便快捷的异步化执行业务的能力,只需要添加一个注解@Async既可以使你的业务异步执行,这里的异步执行,指的是

瑶山的博客 7093

YOLOv12涨点改进 | Neck特征融合改进篇 | YOLOv12引 入 BiFPN双向特征金字塔网络,显著提升了多尺度特征融合效率,目标检测、图像分割、图像分类,助力高效涨点

本文提出了一种基于BiFPN特征融合模块优化的YOLOv12目标检测方法。BiFPN通过引入可学习的权重实现高效的多尺度特征融合,结合双向连接机制提升特征提取能力。实验表明,该方法在COCO数据集上实现了优异的检测性能。文章详细介绍了BiFPN模块的原理、核心代码实现,以及如何将其集成到YOLOv12框架中,包括模块添加、配置文件修改等具体步骤。这种改进方案具有参数少、计算量小等优势,为高效目标检测提供了一种新的技术路径。

Ai缝合怪、助力小伙伴高效发论文 393

YOLO11改进:轻量级改进 | 通用倒瓶颈(UIB)搜索块结合C3k2二次创新 | 轻量化之王MobileNetV4

通用倒瓶颈(UIB)搜索块替代YOLO11的C3k2

会AI的学姐 295

SpringBoot中@EnableAsync和@Async注解的使用

SpringBoot中@EnableAsync和@Async注解的使用

ACGkaka的博客 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java博客系统源码优化实践:缓存、异步与分布式锁的应用

通过将缓存异步和分布式锁性能:缓存承担了绝大部分读请求,数据库压力骤降,响应速度极快。用户体验:异步化将耗时操作后置,请求响应无延迟,用户体验流畅。一致性:分布式锁保证了在分布式环境下关键操作的原子性,数据准确无误。当然,架构优化永无止境。下一步可以考虑:数据库分库分表:应对海量文章数据存储。静态化处理:将完全静态的文章详情页推送到CDN。消息队列:引入Kafka或RocketMQ,将异步任务解耦得更彻底,实现削峰填谷。希望本文的实践分享能为你优化自己的系统带来启发。

xm123m的博客 773

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JDK 安装与 Java 项目搭建:开发 Pixel Dream Workshop 的 Spring Boot 后端

本文介绍了如何在星图GPU平台上自动化部署👾 像素幻梦 · 创意工坊 (Pixel Dream Workshop)镜像,快速搭建Spring Boot后端服务。该镜像专为AI任务调度系统设计,支持Java技术栈开发,可高效处理图片生成、视频制作等创意任务,显著提升开发效率。

weixin_42594427的博客 181

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java 线程池使用指南:基于 Spring Boot 3.x + JDK 17 的入门与实践

这是状态刷新任务专用线程池。常态并发 20,峰值最高 40。最多允许 3000 个任务排队。线程名前缀清晰,日志和线程 dump 里容易定位。服务关闭时最多等待 30 秒,让已经提交的任务尽量完成。如果你使用的是 Spring Boot 3.2 或更高版本,也可以通过创建线程池;但新手先掌握上面这种 Bean 风格配置更直观,也更容易理解每个参数对应的底层含义。

cjejwe的博客 248

JDK 17 +spiring boot+ maven 应用服务 高并发调优

覆盖。

303

Spring Boot最新面试题

摘要: 本文深入解析Spring Boot核心机制,包括自动配置原理(@EnableAutoConfiguration、spring.factories、条件注解)、完整启动流程(从main()到Web容器启动)、自定义Starter设计规范、外部化配置加载顺序与动态刷新方案,以及内嵌Web容器可插拔实现原理。内容涵盖SPI机制、条件装配、启动生命周期、模块化设计、配置管理和容器集成等关键知识点,适用于中高级开发者面试准备和技术提升。

码到三十五 2381

Spring Boot系列二 Spring @Async异步线程池用法总结

Spring异步线程池的接口类, @Async, @AsyncUncaughtExceptionHandler ,@EnableAsync

不积跬步无以至千里; 不积小流无以成江海 14万+

Spring Boot @Async 异步任务执行

当一个@Async方法有一个Future类型的返回值时,就很容易管理在调Future的get()方法获取任务的执行结果时抛出的异常。换句话说,方法的调用者会立即得到返回,并且实际的方法执行是想Spring的TaskExecutor提交了一个任务。举个例子:下面这种,在外部直接调用sayHi()是可以异步执行的,而调用sayHello()时sayHi()仍然是同步执行。默认是用代理去处理@Async的,因此,相同类中的方法调用带@Async的方法是无法异步的,这种情况仍然是同步。

weixin_62421895的博客 1097

Spring Boot 中的异步 @Async

异步处理是提升系统性能和用户体验的重要手段之一。通过@Async注解,我们可以很方便地将方法标记为异步执行,并在需要时获取异步执行的结果。在实际开发中,合理使用异步处理可以有效地提高系统的并发能力和响应速度。希望本文对你理解和使用 Spring Boot 中的异步处理有所帮助。如果你有任何问题或建议,欢迎在评论区留言讨论。

良月柒 1256

Spring中@Async异步回调

有一篇我们讲了用java的线程池跑批量任务,虽然也很方便,但是实际开发中,我们大部分都是使用Spring的框架,一个@Async注解就可以实现异步调用,让并发编程变的更简单了,与此同时我们也没办法通过方法的返回值能直接拿到结果了,所以需要用到异步回调,子线程做完之后回调给主线程 项目背景不用多说了,一般都是sping-boot 准备 @EnableAsync添加在启动类或者带@Configuration的都行 创建job 主要是利用Future这个函数处理回调,方法异步执行直接返回该类,任务是否执行完会.

Jason 2447

Spring Boot(5) @Async异步线程池详解

一. Spring异步线程池的接口类 :TaskExecutor Spring异步线程池的接口类,其实质是java.util.concurrent.Executor Spring 已经实现的异常线程池: 1. SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。 2. SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于不需要多线程的地方 3. ConcurrentTaskExecutor:Executor...

黄规速博客:学如逆水行舟,不进则退 9792

在Spring Boot中使用@Async异步任务的线程池

既然有了@Async,我们还需要使用他提供的线程池? 虽然使用`@Async`注解允许方法异步执行,但它并不提供底层的线程池管理。默认情况下,Spring会使用一个简单的任务执行器来执行异步方法,这可能不是在所有场景下都是理想的。

好看的皮囊千篇一律,有趣的灵魂万里挑一。 2384
上一篇: spring boot(16)-mail发邮件
下一篇: maven(19)-生命周期和内置插件
free_java
博客等级 码龄10年 664粉丝 131原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值