博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot-异步线程调用
阅读量:6229 次
发布时间:2019-06-21

本文共 2119 字,大约阅读时间需要 7 分钟。

启动类:添加@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

转载于:https://www.cnblogs.com/fantjesse/p/9447661.html

你可能感兴趣的文章
OSPF中使用完全次末节区域--total nssa
查看>>
unity3D与网页的交互---做项目的一点总结
查看>>
Nginx—核心配置location匹配规则说明
查看>>
分布式监控之Zabbix-Server
查看>>
Zone-based User Based Firewall
查看>>
AWS CLI使用s3
查看>>
在jfinal中使用druid,并配置查看权限
查看>>
视频+书签 Powerpiont2010可以这样玩
查看>>
如何限制GNS3中CPU的使用率(ASA)
查看>>
首都机场以后也能刷脸坐飞机了
查看>>
PyQt的Layout的比例化分块。
查看>>
python os模块
查看>>
随机生成验证码
查看>>
用Windows画图改变图片大小(附Linux企鹅头像完全版)。
查看>>
NOSQL系列-Redis精简版安装与Ruby测试
查看>>
追MM 之适配器模式实现
查看>>
一种测试方向的探讨-基于模型测试调研引发的思考 - 2
查看>>
Windows 7可以拯救微软Netbook市场
查看>>
彻底清除 mplay.com与mplay.exe病毒
查看>>
向右键添加新建脚本菜单
查看>>