当前位置:   article > 正文

CompletableFuture执行多个异步任务,将结果合并返回_completablefuture 合并多个异步返回结果

completablefuture 合并多个异步返回结果
  1. public Map<String, String> test() throws InterruptedException, ExecutionException {
  2. // 不存在并发插入情况,不需要使用ConcurrentHashMap
  3. // Map<String, String> data = new ConcurrentHashMap<>(3);
  4. Map<String, String> data = new HashMap<>(3);
  5. //第一个任务。返回参数类型可自定义
  6. CompletableFuture<String> task01 = CompletableFuture.supplyAsync(() -> {
  7. try {
  8. TimeUnit.SECONDS.sleep(3);
  9. } catch (InterruptedException e) {
  10. e.printStackTrace();
  11. }
  12. return "task01";
  13. });
  14. //第二个任务。返回参数类型可自定义
  15. CompletableFuture<String> task02 = CompletableFuture.supplyAsync(() -> {
  16. try {
  17. TimeUnit.SECONDS.sleep(5);
  18. } catch (InterruptedException e) {
  19. e.printStackTrace();
  20. }
  21. return "task02";
  22. });
  23. // 第三个任务。返回参数类型可自定义
  24. CompletableFuture<String> task03 = CompletableFuture.supplyAsync(() -> {
  25. try {
  26. TimeUnit.SECONDS.sleep(3);
  27. } catch (InterruptedException e) {
  28. e.printStackTrace();
  29. }
  30. return "task03";
  31. });
  32. // get()方法会阻塞,最终得到处理时间,取决于多线程的最大响应时间的接口
  33. String task01Result = task01.get() ;
  34. String task02Result = task02.get() ;
  35. String task03Result = task03.get() ;
  36. data.put("task01", task01Result );
  37. data.put("task02", task02Result );
  38. data.put("task03", task03Result );
  39. return data;
  40. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/280677
推荐阅读
相关标签
  

闽ICP备14008679号