zoukankan      html  css  js  c++  java
  • Spring Boot 异步方法的调用

    Spring Boot 异步方法的调用

    参考资料:

    1、Spring Boot中使用@Async实现异步调用

    使用方法

    两个步骤:
    1、开启配置 @EnableAsync,这一步特别容易忘记,导致测试的时候不生效,所以请留意。
    2、使用注解 @Async

    特别注意: @Async所修饰的函数不能定义为 static 类型,如果是 static 类型异步调用不会生效。

    如何获得异步方法的返回值

    1、将异步方法原来的 void 声明改为 Future<T>
    2、异步方法的返回值为 new AsyncResult<T>
    3、测试方法:

    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = HelloWorldApplication.class)
    public class TaskTest {
    
        @Autowired
        private Task task;
    
        @Test
        public void test01(){
            Future<String> f1 = task.doTaskOne();
            Future<String> f2 = task.doTaskTwo();
            Future<Integer> f3 = task.doTaskThree();
    
            try {
                while (f1.isDone()){
                    System.out.println(f1.get());
                }
    
                while (f2.isDone()){
                    System.out.println(f2.get());
                }
    
                while (f3.isDone()){
                    System.out.println(f3.get());
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
    
            CountDownLatch countDownLatch = new CountDownLatch(1);
            try {
                countDownLatch.await();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("JVM 退出");
        }
    }
    

    源代码可以在我的 GitHub 上下载,地址是:我的 GitHub ,请记得选择 async 分支。

  • 相关阅读:
    工厂增强
    面试题
    SpringBean生命周期及作用域
    字符串
    带参数方法实例
    带参数方法
    人机猜拳
    类的无参方法
    类和对象实例2
    类和对象实例1
  • 原文地址:https://www.cnblogs.com/liweiwei1419/p/6769549.html
Copyright © 2011-2022 走看看