@Async 注解不生效

  今天发现了一个奇怪的问题,@Async 在某些地方不生效,不是异步的而是同步。(自己对Spring-Boot的@Async 注解不是很了解导致的)

  大概代码如下:

  

public void handData() throws InterruptedException {
        System.out.println("方法1");
        asyneTask();
        System.out.println("运行结束");
    }

    @Async
    public void asyneTask() throws InterruptedException {
        Thread.sleep(1000);
        System.out.println("方法2");
    }

  程序执行的时候,永远会等待【方法2】输出,查了一下百度,大致的方法是缺少配置之类的,但是我这里显然不是,因为其他的异步注解生效了,不过从以下博客或问答中发现了问题:

  【博客】http://blog.didispace.com/springbootasync/

  【问答】https://www.oschina.net/question/3070332_2269990

  博客中,异步的方法调用是在另一个类里面,而我的这个是两个方法都在同一个类里面,只是一个方法调用另一个异步方法,不生效。

   解决方法就是拆分两个方法,将异步方法单独放在一个类里面,然后再去调用就解决了。具体参考【博客】链接。

  如果错漏欢迎指正。

原文地址:https://www.cnblogs.com/timeout/p/10477561.html