我是靠谱客的博主 爱撒娇帽子,最近开发中收集的这篇文章主要介绍@Async 注解无效的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

@Async 注解作用

   在Spring中,基于@Async标注的方法,称之为异步方法;这些方法将在执行的时候,将会在独立的线程中被执行,调用者无需等待它的完成,即可继续其他的操作。即可理解为,标注了@Async注解的方法,会被主线程交给子线程去完成。

@Async注解用法

    /**
     * 保存发送短信日志
     * @param phone 手机号
     * @param object 短信参数
     * @return
     */
    @Async
    public void insertNotice(String phone, JSONObject object){
        // 业务逻辑,通常是比较低效且耗时的业务逻辑
        
    }

加了该注解,主程序调用insertNotice函数时,就不会等待该函数执行完成,类似启动子线程来执行。

new Thread(()->{
    // 业务逻辑,通常是比较低效且耗时的业务逻辑
    
}).start();

区别在于,通过@Async方法虽然也是子线程执行业务逻辑,但是避免程序创建,维护及销毁线程所带来的内存占用,该注解调用的是Spring维护的一个大的线程池中的子线程。

@Async 注解无效

实际使用中,通过DEBUG发现加了该注解并没有出现异步执行的情况,是因为缺少@EnableAsync注解。

@Service
@EnableAsync
public class MySelfServiceImpl {

    /**
     * 保存发送短信日志
     * @param phone 手机号
     * @param object 短信参数
     * @return
     */
    @Async
    public void insertNotice(String phone, JSONObject object){
        // 业务逻辑,通常是比较低效且耗时的业务逻辑
        
    }

}

一般的,如果在项目中经常使用该注解,一般会把它加到Application 类中,这样即可在全局使用该注解。

需要注意,使用该注解时,需要做一些配置,详细的可以百度。

@SpringBootApplication
@EnableAsync
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

 

最后

以上就是爱撒娇帽子为你收集整理的@Async 注解无效的问题的全部内容,希望文章能够帮你解决@Async 注解无效的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部