组合 CompletableFuture

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

有点拗口,但是我们看例子来理解。函数需要一个大写字符串做参数,然后返回一个CompletableFuture, 这个CompletableFuture会转换字符串变成小写然后连接在大写字符串的后面。

static void thenComposeExample() {String original = "Message";CompletableFuture cf = CompletableFuture.completedFuture(original).thenApply(s -> delayedUpperCase(s)).thenCompose(upper -> CompletableFuture.completedFuture(original).thenApply(s -> delayedLowerCase(s)).thenApply(s -> upper + s));assertEquals("MESSAGEmessage", cf.join());
}

CompletableFuture详解~thenCompose相关推荐

  1. CompletableFuture详解~allOf

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

  2. CompletableFuture详解~CompletionStage

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

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

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

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

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

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

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

  6. CompletableFuture详解~异常处理

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

  7. CompletableFuture详解~supplyAsync

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

  8. CompletableFuture详解~anyOf

    当几个阶段中的一个完成,创建一个完成的阶段 下面的例子演示了当任意一个CompletableFuture完成后, 创建一个完成的CompletableFuture. 待处理的阶段首先创建, 每个阶段都 ...

  9. CompletableFuture详解~thenCombine

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

最新文章

  1. 使用ReaderWriterLock优化文件缓存
  2. 前端临床手扎——简单易用的fetch
  3. 二叉树的先序遍历和非递归遍历
  4. JSP页面的执行过程
  5. kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询
  6. python读取usb扫码枪数据_USB
  7. 获得最新纪录 sql
  8. vue 调用c++_electron-vue跨平台桌面应用开发实战教程(七)——ffi调用C++(macOS平台)...
  9. python战斗2:看到一个页面编码
  10. Linux之pwd命令
  11. 浅学DSP原理及应用
  12. Java线程之线程的五种状态
  13. 【向生活低头】如何在Gold Wave软件中为声音添加背景音乐
  14. Vue 中使用Pug
  15. SAP ABAP ZBA_R003 查询用户下的角色里的公司
  16. Python+OpenCV实现图像处理OCR手写数字识别原理
  17. python音乐播放器
  18. 计算机等级考试一级ps内容,计算机等级考试《一级ps》备考练习及答案
  19. IP 数据库,CSV 和 MDB 格式。
  20. 自然语言处理的一些工具

热门文章

  1. 图谱实战 | 知识图谱构建的一站式平台gBuilder
  2. 技术动态 | 知识图谱的策展
  3. 服务器部署docker
  4. Linux系统中Oracle数据库使用SELECT语句检索数据(1)实例应用
  5. Android官方开发文档Training系列课程中文版:通知用户之大视图通知
  6. Android官方开发文档Training系列课程中文版:高效显示位图之位图缓存
  7. 【JavaWeb】XML和Jsoup的相关内容
  8. PowerShell(PHPStorm terminal with PowerShell)运行git log中文乱码
  9. lucene索引创建
  10. 用js使得输入框input只能输入数字