@Async 注解的使用以及原理

本文介绍Spring中@Async注解的使用方法,包括其如何实现异步任务执行,适用场景、条件及如何配合@EnableAsync启用异步,避免阻塞web服务线程。

        Spring中用@Async注解标记的方法,称为异步方法,它会在调用方的当前线程之外的独立的线程中执行,其实就相当于我们自己new Thread(()-> System.out.println("hello world !"))这样在另一个线程中去执行相应的业务逻辑。@Async描述的方法底层会异步执行(不由web服务线程执行, 而是交给spring自带的线程池中的线程去执行。优点在于不会长时间阻塞web服务(例如tomcat)线程。

@Async注解使用条件:

1)@Async注解一般用在类的方法上,如果用在类上,那么这个类所有的方法都是异步执行的

2)所使用的@Async注解方法的类对象应该是Spring容器管理的bean对象;

3)@Async注解的应用有个前提,需要启动类上启动异步执行(添加@EnableAsync注解)

 

@Async注解Spring框架中用于标识一个方法是异步执行的。然而,使用@Async注解可能会带来一些潜在的危害。 首先,使用@Async注解需要在配置类上添加@EnableAsync注解,以激活异步功能。这就意味着在使用@Async注解之前,需要对配置进行一些修改,可能会增加代码复杂性和维护成本。 其次,@Async注解是通过AsyncAnnotationBeanPostProcessor这个类实现的。这个类会处理@Async注解并生成代理对象。然而,使用@Async注解后,生成的代理对象与早期暴露出去的对象可能不一样。这可能导致一些问题,比如AOP切面无法正确拦截异步方法的调用。 另外,使用@Async注解需要使用线程池来实现异步执行。虽然可以自己通过线程池来实现异步,但是需要手动管理线程池的创建和销毁。如果线程池的配置不当,可能会导致系统的资源消耗过大或线程池满载而导致请求阻塞。 综上所述,使用@Async注解可能会引入一些潜在的危害,需要在配置和线程池管理方面进行额外的注意和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [@Async注解的坑,小心](https://blog.youkuaiyun.com/YYniannian/article/details/125737301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Spring中异步注解@Async使用原理使用时可能导致的问题](https://blog.youkuaiyun.com/qq_41907991/article/details/107500036)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值