首页 > 其他分享 >使用注解@Async实现异步执行未生效的解决办法

使用注解@Async实现异步执行未生效的解决办法

时间:2024-02-22 14:59:01浏览次数:24  
标签:异步 调用 生效 Async 执行 注解

使用注解@Async实现异步执行未生效的解决办法

1、第一种:未在启动类上标注开启异步执行的注解 

启动类
 @SpringBootApplication
@EnableScheduling
@EnableAsync
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600*4)
@MapperScan("com.*")
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

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

 然后在要执行的方法上添加@Async

2、第二种失效情况:在同一个类Class中的两个方法 A ,B , B方法标注@Async,A方法在调用B方法是异步执行不生效

@Async生效是要由Spring容器管理的类调用才会生效,Spring在扫描到方法上包含@Async会生成一个动态子类来调用

同类方法间的调用不会生成动态子类,可以使用((Class)Appcontext.currentProxy()).B()来调用以确保异步正常执行

标签:异步,调用,生效,Async,执行,注解
From: https://www.cnblogs.com/xiao-ao-jiang-hu/p/18027309

相关文章

  • @Transactional事务注解失效
    @Transactional事务注解失效事务注解失效可能出现在以下几个方面:@Transactional标注在了非public修饰的方法上————事务注解失效@Transactional注解属性propagation设置错误—————事务注解失效PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则......
  • Java_10 注解与反射
    title:(在线学习平台)link:(https://www.acwing.com/)cover:(https://cdn.acwing.com/media/activity/surface/log.png)1注解(1)注解(Annotation)也被称为元数据(Metadata),用于修饰包、方法、属性、构造器、局部变量等数据信息。(2)注解不影响程序逻辑,但注解可以被编译或运......
  • Android里使用AspectJ实现双击自定义注解
    创建注解首先创建一个双击注解。importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;​/***<pre>*desc:双击*author:刘金*......
  • CompletableFuture异步编程详解
    Future介绍先来回顾下Future,Future是JDK1.5中添加的接口,主要功能为:获取并发的任务完成后的执行结果;能够取消并发执行中的任务;判断并发任务是否执行完成;但Future也有着非常明显的缺点:阻塞:调用get()方法会一直阻塞,直到等待直到计算完成;异常处理:Future没有提供任何异常处理的方......
  • Python asyncio
    asyncio作用提供了对携程的支持非阻塞:协程允许在等待异步操作的同时执行其他任务,而不会阻塞整个程序。轻量:相对于线程和进程,协程的开销较小,因为它们在单线程中执行。使用async/await语法:asyncdef声明协程函数,await用于等待异步操作的完成。事件循环:协程需要在事件循环......
  • Python异步编程原理篇之IO多路复用模块selector
    selector简介selector是一个实现了IO复用模型的python包,实现了IO多路复用模型的select、poll和epoll等函数。它允许程序同时监听多个文件描述符(例如套接字),并在其中任何一个就绪时进行相应的操作。这样可以有效地管理并发I/O操作,提高程序的性能和资源利用率。本篇主要......
  • 异步编程简介
    异步编程是一种编程模式,旨在提高程序的性能和响应速度。通过将某些任务异步执行,程序可以在等待结果时继续执行其他任务,从而减少了阻塞和等待的时间。在本篇博客中,我们将详细探讨异步编程的各个方面,并介绍常见的异步编程技术和工具。什么是异步编程?传统的同步编程方式中,代码会按照......
  • Java注解篇之@SuppressWarnings注解详解 代码编译通过且可以运行,但每行前面的“感叹号
    Java注解篇之@SuppressWarnings注解详解@SuppressWarnings作用:用于抑制编译器产生警告信息。它的注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量,但是建议注解声明在最接近警告发生的位置。去感叹号?我们经常遇到代码编译通过且可以运行,但每行前面的“感叹号”就......
  • dotnet 异步编程
    异步与多线程是不同的概念异步并不意味着多线程,单线程同样可以异步。异步默认借助线程池。多线程经常会有阻塞的操作,而异步要求不阻塞。异步与多线程适用场景不同多线程:适合CPU密集型操作适合长期运行的任务线程的创建与销毁的开销是比较大的提供更底层的控制,操作线程、......
  • 玩转CompletableFuture线程异步编排,看这一篇就够了
    转载自:https://blog.csdn.net/w306026355/article/details/1097072691、CompletableFuture介绍CompletableFuture可用于线程异步编排,使原本串行执行的代码,变为并行执行,提高代码执行速度。学习异步编排先需要学习线程池和lambda表达式相关知识,学习线程池可以移步我的另一篇博......