当前位置: 首页 > news >正文

@Async 注解 走的是主线程 还是子线程呢

@Asyncz注解所在的包

package org.springframework.scheduling.annotation;

@Async 注解在Spring框架中用于标记一个方法为异步方法。当这个方法被调用时,它不会阻塞调用线程,而是会在一个单独的线程中执行。因此,@Async 注解走的是子线程,而不是主线程。

具体来说,当你在一个Spring管理的Bean上使用@Async注解时,Spring会创建一个代理对象来包装这个Bean。当你调用这个Bean上的异步方法时,实际上调用的是代理对象的方法。代理对象会负责将方法调用提交给一个任务执行器(TaskExecutor),通常是一个线程池。然后,任务执行器会分配一个新的线程来执行这个方法,从而实现异步执行。

这样,主线程就可以继续执行其他任务,而不需要等待异步方法的完成。这对于提高应用程序的响应性和性能非常有用,尤其是在执行耗时的操作(如数据库查询、文件I/O、远程调用等)时。

需要注意的是,要使@Async注解生效,你需要在Spring配置中启用异步支持。这通常通过在配置类上添加@EnableAsync注解来实现。此外,@Async注解的方法不能是同一个类内部的调用,因为这样不会通过代理对象,而是直接调用方法本身,从而失去异步执行的效果。

http://www.dtcms.com/a/223406.html

相关文章:

  • C# 将HTML文档、HTML字符串转换为图片
  • 代购企业如何解决选品管理问题?
  • IPD流程体系-TR2评审要素表
  • LangChain表达式 (LCEL)
  • RSTP介绍加实操
  • Spring Cloud 学习 —— 简单了解
  • ⼤模型驱动的DeepInsight Copilot在蚂蚁的技术实践
  • Express教程【002】:Express监听GET和POST请求
  • 两阶段uplift建模(因果估计+预算分配)的讲座与自己动手实践(一)
  • 血糖监测仪解决方案推荐芯片-NRF52832/HS6621/OM6626
  • Windows 11 家庭版 安装Docker教程
  • RCU stall 异常卡住问题
  • 【C/C++】cmake实现Release版本禁用调试接口技巧
  • YOLOv8分割onnx实战及tensorRT部署
  • Java 之殇:从中流砥柱到“被温柔替代”
  • 大话软工笔记—分离之业务与管理
  • 深度学习实战110-基于深度学习的工业系统故障诊断技术研究(卷积网络+注意力机制模型)
  • 核心机制:确认应答和超时重传
  • 【leetcode】02.07. 链表相交
  • 什么是AI Agent?大白话新手教学
  • Python基本运算符
  • Java异常与错误:核心区别深度解析
  • Baklib内容中台AI赋能智能服务升级
  • 【论文阅读】DanceGRPO: Unleashing GRPO on Visual Generation
  • 基于VU37P的高性能采集板卡
  • Vue3中Element-Plus中el-input及el-select 边框样式
  • 从equals思考对“正念”的认知
  • 基于SpringBoot的在线拍卖系统计与实现(源码+文档+部署讲解)
  • 深入解析 Redis Cluster 架构与实现(一)
  • RSTP协议:秒级收敛解析