zoukankan      html  css  js  c++  java
  • springboot-异步线程调用

    启动类:添加@EnableAsync注解

    @SpringBootApplication 

    @EnableAsync

    public class Application{

      public static void main(String[] args) {

        SpringApplication.run(Application.class, args);

      }

    }

    Controller类

    @RequestMapping("")

    @RestController
    public class AsyncTaskController {

      @Autowired
      private AsyncTask asyncTask;

      @RequestMapping("")
      public String doTask() throws InterruptedException{
        long currentTimeMillis = System.currentTimeMillis();
        Future<String> task1 = asyncTask.task1();

        Future<String> task2 = asyncTask.task2();
        Future<String> task3 = asyncTask.task3();
        String result = null;
        for (;;) {
          if(task1.isDone() && task2.isDone() && task3.isDone()) {
          // 三个任务都调用完成,退出循环等待
          break;
          }
          Thread.sleep(1000);
        }

        long currentTimeMillis1 = System.currentTimeMillis();

        result = "task任务总耗时:"+(currentTimeMillis1-currentTimeMillis)+"ms";
        return result;

      }
    }


    异步任务类
    @Component
    public class AsyncTask {

      @Async
      public Future<String> task1() throws InterruptedException{
        long currentTimeMillis = System.currentTimeMillis();
        Thread.sleep(1000);
        long currentTimeMillis1 = System.currentTimeMillis();
        System.out.println("task1任务耗时:"+(currentTimeMillis1-currentTimeMillis)+"ms");

         return new AsyncResult<String>("task1执行完毕");
      }

      @Async
      public Future<String> task2() throws InterruptedException{
        long currentTimeMillis = System.currentTimeMillis();
        Thread.sleep(2000);
        long currentTimeMillis1 = System.currentTimeMillis();
        System.out.println("task2任务耗时:"+(currentTimeMillis1-currentTimeMillis)+"ms");

             return new AsyncResult<String>("task2执行完毕");
      }


      @Async
      public Future<String> task3() throws InterruptedException{
        long currentTimeMillis = System.currentTimeMillis();
        Thread.sleep(3000);
        long currentTimeMillis1 = System.currentTimeMillis();
        System.out.println("task3任务耗时:"+(currentTimeMillis1-currentTimeMillis)+"ms");

             return new AsyncResult<String>("task3执行完毕");
      }

    }

    结果:

    1. task1任务耗时:1000ms
    2.  task2任务耗时:2001ms
    3.  task3任务耗时:3001ms

      task任务总耗时:4015ms

  • 相关阅读:
    Android支付接入(7):Google In-app-Billing
    SDK接入(2)之Android Google Play内支付(in-app Billing)接入
    Google In-App Billing 实现(内含Unity 实现经验)
    unity3d如何快速接入渠道SDK之Unity篇
    [Unity3D]Unity+Android交互教程——让手机"动"起来
    mysql avg()函数,获取字段的平均值
    mysql tan() 函数
    mysql pi() 获取pi
    mysql mod() 获取余数
    mysql sqrt() 函数
  • 原文地址:https://www.cnblogs.com/fantjesse/p/9447661.html
Copyright © 2011-2022 走看看