知识卡片
阶段表达流水线
内容
CompletionStage 代表异步计算中的一个阶段,包装 Function(有输入有输出)、Consumer(有输入无输出)或 Runnable(无输入无输出)之一。多个阶段可链式调用形成流水线,一个阶段完成后触发下一个。它关注”谁依赖谁的结果”,而非把线程控制细节暴露给业务代码;一个阶段触发多个后续阶段时不保证顺序。
参考来源
- 位置:《Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式》第10章《CompletableFuture异步回调》10.1.2节《CompletionStage接口》(源文件:_epub-src/OEBPS/Text/chapter301.xhtml)
- 结论依据:原文定义“CompletionStage代表某个同步或者异步计算的一个阶段,或者一系列异步任务中的一个子任务”,并列出Function/Runnable/Consumer三种子任务分别对应的输入输出特点,用`oneStage.thenApply().thenAccept().thenRun()`示例说明链式调用构成流水线,指出“一个子任务可以触发其他子任务,但是并不能保证后续子任务的执行顺序”,因此推出本卡结论。
- 原始内容:CompletionStage代表某个同步或者异步计算的一个阶段,或者一系列异步任务中的一个子任务(或者阶段性任务)……多个CompletionStage构成了一条任务流水线,一个环节执行完成了可以将结果移交给下一个环节(子任务)……虽然一个子任务可以触发其他子任务,但是并不能保证后续子任务的执行顺序。