当几个阶段中的一个完成,创建一个完成的阶段

下面的例子演示了当任意一个CompletableFuture完成后, 创建一个完成的CompletableFuture.

待处理的阶段首先创建, 每个阶段都是转换一个字符串为大写。因为本例中这些阶段都是同步地执行(thenApply), 从anyOf中创建的CompletableFuture会立即完成,这样所有的阶段都已完成,我们使用whenComplete(BiConsumer<? super Object, ? super Throwable> action)处理完成的结果。

static void anyOfExample() {StringBuilder result = new StringBuilder();List messages = Arrays.asList("a", "b", "c");List<CompletableFuture> futures = messages.stream().map(msg -> CompletableFuture.completedFuture(msg).thenApply(s -> delayedUpperCase(s))).collect(Collectors.toList());CompletableFuture.anyOf(futures.toArray(new CompletableFuture[futures.size()])).whenComplete((res, th) -> {if(th == null) {assertTrue(isUpperCase((String) res));result.append(res);}});assertTrue("Result was empty", result.length() > 0);
}

CompletableFuture详解~anyOf相关推荐

  1. CompletableFuture详解~CompletionStage

    CompletableFuture 分别实现两个接口 Future与 CompletionStage. Future 接口大家都比较熟悉,这里主要讲讲 CompletionStage. Complet ...

  2. Java 8 的异步编程利器 CompletableFuture 详解

    文章目录 一个例子回顾 Future 一个例子走进CompletableFuture CompletableFuture使用场景 创建异步任务 supplyAsync方法 runAsync方法 任务异 ...

  3. 【异步编程学习笔记】JDK中的FutureTask和CompletableFuture详解(使用示例、源码)

    文章目录 FutureTask概述 使用实例 类图结构 FutureTask的run()方法 FutureTask的局限性 CompletableFuture概述 CompletableFuture代 ...

  4. CompletableFuture详解~join与get的区别

    一.相同点: join()和get()方法都是用来获取CompletableFuture异步之后的返回值 二.区别: 1.join()方法抛出的是uncheck异常(即RuntimeException ...

  5. CompletableFuture详解~异常处理

    计算结果完成时的回调方法 当 CompletableFuture 的计算结果完成,或者抛出异常的时候,可以执行特定的 Action.主要是下面的方法: public CompletableFuture ...

  6. CompletableFuture详解~supplyAsync

    supplyAsync 可以支持返回值. //有返回值 public static void supplyAsync() throws Exception {CompletableFuture< ...

  7. CompletableFuture详解~allOf

    当所有的阶段都完成后创建一个阶段 上一个例子是当任意一个阶段完成后接着处理,接下来的两个例子演示当所有的阶段完成后才继续处理, 同步地方式和异步地方式两种. static void allOfExam ...

  8. CompletableFuture详解~thenCompose

    组合 CompletableFuture 我们可以使用thenCompose()完成上面两个例子.这个方法等待第一个阶段的完成(大写转换), 它的结果传给一个指定的返回CompletableFutur ...

  9. CompletableFuture详解~thenCombine

    使用BiFunction处理两个阶段的结果 如果CompletableFuture依赖两个前面阶段的结果, 它复合两个阶段的结果再返回一个结果,我们就可以使用thenCombine()函数.整个流水线 ...

最新文章

  1. python requests 动态加载_python requests 高级用法
  2. idea配置echache.xml报错Cannot resolve file 'ehcache.xsd'
  3. java jtabbedpane 关闭_JTabbedPane实现关闭按钮 | 学步园
  4. SAP Spartacus读取User Address的请求发送和接收源头
  5. 可禁用计算机服务,win10哪些服务可以禁用 服务哪些可以禁止启动
  6. python:linux中升级python版本
  7. 《C和指针》——声明数组参数
  8. 2021年2月移动互联网全行业排行榜
  9. Springboot: 修改启动时默认图案
  10. QQ配置文件解密(转)
  11. Java的图标和由来
  12. 卫星追踪利器 OpenATS简介
  13. 总结:linux运维常用命令
  14. 使用windows日志监控AD安全性的五大挑战
  15. BZOJ4987:Tree(树形DP)
  16. 专题-参数方程与极坐标
  17. ios 常用的30个动画效果
  18. (ECCV-2018)用于视频识别的多光纤网络
  19. MATLAB下批量修改图片名称
  20. vue - vue中使用西瓜播放器xgplayer

热门文章

  1. 如何成为架构师?3条有效的实战经验
  2. 论文浅尝 | 通过知识到文本的转换进行知识增强的常识问答
  3. 论文浅尝 | Data Intelligence - 多篇语义资源论文
  4. 自然语言处理系列篇——关键词智能提取
  5. Koa 中间件的执行
  6. Laravel 代码开发最佳实践(持续更新)
  7. 防止表单按钮多次提交
  8. iOS事件的响应和传递机制
  9. 【SpringCloud】Netflix源码解析之Ribbon:负载均衡策略的定义和实现
  10. input框自动填充内容背景颜色为黄色解决方法