• 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 分支。

  • 相关阅读:
    TokenType ([{}{}()])[{}]{}
    C# netcore 开发WebService(SoapCore)
    C++求快速幂
    二分法与牛顿迭代法求方程根
    Obtaining a Thorough CS Background Online (线上CS深度学习攻略)
    Elasticsearch 堆空间配置
    S家lic
    如何用calibredrv 来merge多个cell的gds
    siliconsmart feature
    openwrt的IPTV配置
  • 原文地址:https://www.cnblogs.com/liweiwei1419/p/6769549.html
Copyright © 2020-2023  润新知