CompletableFuture详解~anyOf
当几个阶段中的一个完成,创建一个完成的阶段
下面的例子演示了当任意一个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相关推荐
- CompletableFuture详解~CompletionStage
CompletableFuture 分别实现两个接口 Future与 CompletionStage. Future 接口大家都比较熟悉,这里主要讲讲 CompletionStage. Complet ...
- Java 8 的异步编程利器 CompletableFuture 详解
文章目录 一个例子回顾 Future 一个例子走进CompletableFuture CompletableFuture使用场景 创建异步任务 supplyAsync方法 runAsync方法 任务异 ...
- 【异步编程学习笔记】JDK中的FutureTask和CompletableFuture详解(使用示例、源码)
文章目录 FutureTask概述 使用实例 类图结构 FutureTask的run()方法 FutureTask的局限性 CompletableFuture概述 CompletableFuture代 ...
- CompletableFuture详解~join与get的区别
一.相同点: join()和get()方法都是用来获取CompletableFuture异步之后的返回值 二.区别: 1.join()方法抛出的是uncheck异常(即RuntimeException ...
- CompletableFuture详解~异常处理
计算结果完成时的回调方法 当 CompletableFuture 的计算结果完成,或者抛出异常的时候,可以执行特定的 Action.主要是下面的方法: public CompletableFuture ...
- CompletableFuture详解~supplyAsync
supplyAsync 可以支持返回值. //有返回值 public static void supplyAsync() throws Exception {CompletableFuture< ...
- CompletableFuture详解~allOf
当所有的阶段都完成后创建一个阶段 上一个例子是当任意一个阶段完成后接着处理,接下来的两个例子演示当所有的阶段完成后才继续处理, 同步地方式和异步地方式两种. static void allOfExam ...
- CompletableFuture详解~thenCompose
组合 CompletableFuture 我们可以使用thenCompose()完成上面两个例子.这个方法等待第一个阶段的完成(大写转换), 它的结果传给一个指定的返回CompletableFutur ...
- CompletableFuture详解~thenCombine
使用BiFunction处理两个阶段的结果 如果CompletableFuture依赖两个前面阶段的结果, 它复合两个阶段的结果再返回一个结果,我们就可以使用thenCombine()函数.整个流水线 ...
最新文章
- python requests 动态加载_python requests 高级用法
- idea配置echache.xml报错Cannot resolve file 'ehcache.xsd'
- java jtabbedpane 关闭_JTabbedPane实现关闭按钮 | 学步园
- SAP Spartacus读取User Address的请求发送和接收源头
- 可禁用计算机服务,win10哪些服务可以禁用 服务哪些可以禁止启动
- python:linux中升级python版本
- 《C和指针》——声明数组参数
- 2021年2月移动互联网全行业排行榜
- Springboot: 修改启动时默认图案
- QQ配置文件解密(转)
- Java的图标和由来
- 卫星追踪利器 OpenATS简介
- 总结:linux运维常用命令
- 使用windows日志监控AD安全性的五大挑战
- BZOJ4987:Tree(树形DP)
- 专题-参数方程与极坐标
- ios 常用的30个动画效果
- (ECCV-2018)用于视频识别的多光纤网络
- MATLAB下批量修改图片名称
- vue - vue中使用西瓜播放器xgplayer