-
- 所有已知实现类:
-
CompletableFuture
public interface CompletionStage<T>
可能是异步计算的阶段,在另一个CompletionStage完成时执行操作或计算值。 阶段在其计算终止时完成,但这又可以触发其他依赖阶段。 此接口中定义的功能仅使用几种基本形式,这些形式扩展为更大的方法集以捕获一系列使用方式:- 由stage执行的计算可以表示为Function,Consumer或Runnable(使用名称分别包括apply , accept或run的方法 ),具体取决于它是否需要参数和/或产生结果。 例如:
stage.thenApply(x -> square(x)) .thenAccept(x -> System.out.print(x)) .thenRun(() -> System.out.println());
阶段计算的任何参数都是触发阶段计算的结果。
- 一个阶段的执行可以通过完成单个阶段或两个阶段或两个阶段中的任何一个来触发。 在一个单级的依赖关系使用的是带有前缀方法然后配置。 这些都通过两个阶段的结束为契机可以结合自己的成绩和效果,使用相应的命名方法。 由两个阶段中的任何一个触发的那些都不能保证哪个结果或效果用于依赖阶段的计算。
- 各阶段之间的依赖关系控制计算的触发,但不保证任何特定的排序。 另外,新阶段计算的执行可以以三种方式中的任何一种来安排:默认执行,默认异步执行(使用具有后台异步的方法,使用阶段的默认异步执行工具)或自定义(通过提供的
Executor
)。 默认和异步模式的执行属性由CompletionStage实现指定,而不是此接口。 具有显式Executor参数的方法可能具有任意执行属性,甚至可能不支持并发执行,但是以适应异步的方式进行处理。 - 两种方法形式(
handle
和whenComplete
)支持无条件计算,无论触发阶段是正常完成还是异常完成。 方法exceptionally
仅在触发阶段异常完成时才支持计算,计算替换结果,类似于javacatch
关键字。 在所有其他情况下,如果一个阶段的计算突然以(未经检查的)异常或错误终止,那么所有需要完成的依赖阶段也会异常完成,其中CompletionException
将异常作为其原因。 如果一个阶段是依赖于两个两个阶段,都非常完整,那么CompletionException可以对应于这些例外的任何一个。 如果一个阶段依赖于另外两个阶段中的任何一个阶段,并且只有一个阶段异常完成,则不保证依赖阶段是正常完成还是异常完成。 在方法whenComplete
的情况下,当提供的操作本身遇到异常时,该阶段异常地完成此异常,除非源阶段也异常完成,在这种情况下,源阶段的异常完成被赋予优先级并传播到依赖阶段。
所有方法都遵循上述触发,执行和异常完成规范(在各个方法规范中不再重复)。 此外,虽然用于传递完成结果的参数(即,对于类型为
T
参数)接受它们的方法可能为null,但为任何其他参数传递空值将导致抛出NullPointerException
。方法表单
handle
是创建延续阶段的最通用方法,无条件地执行计算,该计算既给出了触发CompletionStage的结果和异常(如果有的话),又计算了任意结果。 方法whenComplete
类似,但保留触发阶段的结果而不是计算新的结果。 因为阶段的正常结果可能是null
,所以两种方法都应该具有如下结构的计算:(result, exception) -> { if (exception == null) { // triggering stage completed normally } else { // triggering stage completed exceptionally } }
此接口不定义最初创建,强制完成正常或异常,探测完成状态或结果,或等待阶段完成的方法。 CompletionStage的实现可以酌情提供实现此类效果的方法。 方法
toCompletableFuture()
通过提供公共转换类型来实现该接口的不同实现之间的互操作性。- 从以下版本开始:
- 1.8
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 CompletionStage<Void>
acceptEither(CompletionStage<? extends T> other, Consumer<? super T> action)
返回一个新的CompletionStage,当该或其他给定阶段正常完成时,将执行相应的结果作为所提供操作的参数。CompletionStage<Void>
acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action)
返回一个新的CompletionStage,当该阶段或其他给定阶段正常完成时,使用此阶段的默认异步执行工具执行,并将相应的结果作为所提供操作的参数。CompletionStage<Void>
acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action, Executor executor)
返回一个新的CompletionStage,当此或其他给定阶段正常完成时,使用提供的执行程序执行,并将相应的结果作为所提供操作的参数。<U> CompletionStage<U>
applyToEither(CompletionStage<? extends T> other, Function<? super T,U> fn)
返回一个新的CompletionStage,当这个或另一个给定的阶段正常完成时,将执行相应的结果作为所提供函数的参数。<U> CompletionStage<U>
applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn)
返回一个新的CompletionStage,当该阶段或其他给定阶段正常完成时,使用此阶段的默认异步执行工具执行,并将相应的结果作为所提供函数的参数。<U> CompletionStage<U>
applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn, Executor executor)
返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,使用提供的执行程序执行,并将相应的结果作为所提供函数的参数。CompletionStage<T>
exceptionally(Function<Throwable,? extends T> fn)
返回一个新的CompletionStage,当该阶段异常完成时,将以此阶段的异常作为所提供函数的参数执行。<U> CompletionStage<U>
handle(BiFunction<? super T,Throwable,? extends U> fn)
返回一个新的CompletionStage,当该阶段正常或异常完成时,将使用此阶段的结果和异常作为所提供函数的参数执行。<U> CompletionStage<U>
handleAsync(BiFunction<? super T,Throwable,? extends U> fn)
返回一个新的CompletionStage,当该阶段正常或异常完成时,使用此阶段的默认异步执行工具执行,该阶段的结果和异常作为所提供函数的参数。<U> CompletionStage<U>
handleAsync(BiFunction<? super T,Throwable,? extends U> fn, Executor executor)
返回一个新的CompletionStage,当该阶段正常或异常完成时,使用提供的执行程序执行,该阶段的结果和异常作为所提供函数的参数。CompletionStage<Void>
runAfterBoth(CompletionStage<?> other, Runnable action)
返回一个新的CompletionStage,当此和另一个给定阶段都正常完成时,执行给定的操作。CompletionStage<Void>
runAfterBothAsync(CompletionStage<?> other, Runnable action)
返回一个新的CompletionStage,当此和另一个给定阶段都正常完成时,使用此阶段的默认异步执行工具执行给定的操作。CompletionStage<Void>
runAfterBothAsync(CompletionStage<?> other, Runnable action, Executor executor)
返回一个新的CompletionStage,当此和另一个给定阶段都正常完成时,使用提供的执行程序执行给定的操作。CompletionStage<Void>
runAfterEither(CompletionStage<?> other, Runnable action)
返回一个新的CompletionStage,当该阶段或其他给定阶段正常完成时,执行给定的操作。CompletionStage<Void>
runAfterEitherAsync(CompletionStage<?> other, Runnable action)
返回一个新的CompletionStage,当该阶段或其他给定阶段正常完成时,使用此阶段的默认异步执行工具执行给定的操作。CompletionStage<Void>
runAfterEitherAsync(CompletionStage<?> other, Runnable action, Executor executor)
返回一个新的CompletionStage,当此或其他给定阶段正常完成时,使用提供的执行程序执行给定的操作。CompletionStage<Void>
thenAccept(Consumer<? super T> action)
返回一个新的CompletionStage,当此阶段正常完成时,将使用此阶段的结果作为所提供操作的参数执行。CompletionStage<Void>
thenAcceptAsync(Consumer<? super T> action)
返回一个新的CompletionStage,当该阶段正常完成时,使用此阶段的默认异步执行工具执行,该阶段的结果作为所提供操作的参数。CompletionStage<Void>
thenAcceptAsync(Consumer<? super T> action, Executor executor)
返回一个新的CompletionStage,当这个阶段正常完成时,使用提供的Executor执行,该阶段的结果作为提供的操作的参数。<U> CompletionStage<Void>
thenAcceptBoth(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,将执行两个结果作为提供的操作的参数。<U> CompletionStage<Void>
thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用这个阶段的默认异步执行工具执行,其中两个结果作为提供的操作的参数。<U> CompletionStage<Void>
thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action, Executor executor)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用提供的执行程序执行,其中两个结果作为提供的操作的参数。<U> CompletionStage<U>
thenApply(Function<? super T,? extends U> fn)
返回一个新的CompletionStage,当该阶段正常完成时,将使用此阶段的结果作为所提供函数的参数执行。<U> CompletionStage<U>
thenApplyAsync(Function<? super T,? extends U> fn)
返回一个新的CompletionStage,当该阶段正常完成时,使用此阶段的默认异步执行工具执行,该阶段的结果作为所提供函数的参数。<U> CompletionStage<U>
thenApplyAsync(Function<? super T,? extends U> fn, Executor executor)
返回一个新的CompletionStage,当这个阶段正常完成时,使用提供的Executor执行,该阶段的结果作为所提供函数的参数。<U,V>
CompletionStage<V>thenCombine(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,执行两个结果作为所提供函数的参数。<U,V>
CompletionStage<V>thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用这个阶段的默认异步执行工具执行,其中两个结果作为所提供函数的参数。<U,V>
CompletionStage<V>thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn, Executor executor)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用提供的执行器执行,两个结果作为提供的函数的参数。<U> CompletionStage<U>
thenCompose(Function<? super T,? extends CompletionStage<U>> fn)
返回一个新的CompletionStage,它完成的值与给定函数返回的CompletionStage相同。<U> CompletionStage<U>
thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn)
返回一个新的CompletionStage,它使用与给定函数返回的CompletionStage相同的值完成,使用此阶段的默认异步执行工具执行。<U> CompletionStage<U>
thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn, Executor executor)
返回一个新的CompletionStage,它使用与给定函数返回的CompletionStage相同的值完成,使用提供的Executor执行。CompletionStage<Void>
thenRun(Runnable action)
返回一个新的CompletionStage,当此阶段正常完成时,执行给定的操作。CompletionStage<Void>
thenRunAsync(Runnable action)
返回一个新的CompletionStage,当此阶段正常完成时,使用此阶段的默认异步执行工具执行给定的操作。CompletionStage<Void>
thenRunAsync(Runnable action, Executor executor)
返回一个新的CompletionStage,当此阶段正常完成时,使用提供的Executor执行给定的操作。CompletableFuture<T>
toCompletableFuture()
返回CompletableFuture
,保持与此阶段相同的完成属性。CompletionStage<T>
whenComplete(BiConsumer<? super T,? super Throwable> action)
返回与此阶段具有相同结果或异常的新CompletionStage,该阶段在此阶段完成时执行给定操作。CompletionStage<T>
whenCompleteAsync(BiConsumer<? super T,? super Throwable> action)
返回一个新的CompletionStage,其结果或异常与此阶段相同,在此阶段完成时使用此阶段的默认异步执行工具执行给定操作。CompletionStage<T>
whenCompleteAsync(BiConsumer<? super T,? super Throwable> action, Executor executor)
返回一个新的CompletionStage,其结果或异常与此阶段相同,在此阶段完成时使用提供的Executor执行给定的操作。
-
-
-
方法详细信息
-
thenApply
<U> CompletionStage<U> thenApply(Function<? super T,? extends U> fn)
返回一个新的CompletionStage,当该阶段正常完成时,将使用此阶段的结果作为所提供函数的参数执行。该方法类似于
Optional.map
和Stream.map
。有关特殊完成的规则,请参阅
CompletionStage
文档。- 参数类型
-
U
- 函数的返回类型 - 参数
-
fn
- 用于计算返回的CompletionStage值的函数 - 结果
- 新的CompletionStage
-
thenApplyAsync
<U> CompletionStage<U> thenApplyAsync(Function<? super T,? extends U> fn)
返回一个新的CompletionStage,当该阶段正常完成时,使用此阶段的默认异步执行工具执行,该阶段的结果作为所提供函数的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 函数的返回类型 - 参数
-
fn
- 用于计算返回的CompletionStage值的函数 - 结果
- 新的CompletionStage
-
thenApplyAsync
<U> CompletionStage<U> thenApplyAsync(Function<? super T,? extends U> fn, Executor executor)
返回一个新的CompletionStage,当这个阶段正常完成时,使用提供的Executor执行,该阶段的结果作为所提供函数的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 函数的返回类型 - 参数
-
fn
- 用于计算返回的CompletionStage值的函数 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
thenAccept
CompletionStage<Void> thenAccept(Consumer<? super T> action)
返回一个新的CompletionStage,当此阶段正常完成时,将使用此阶段的结果作为所提供操作的参数执行。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
thenAcceptAsync
CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action)
返回一个新的CompletionStage,当该阶段正常完成时,使用此阶段的默认异步执行工具执行,该阶段的结果作为所提供操作的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
thenAcceptAsync
CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action, Executor executor)
返回一个新的CompletionStage,当这个阶段正常完成时,使用提供的Executor执行,该阶段的结果作为提供的操作的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
action
- 完成返回的CompletionStage之前要执行的操作 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
thenRun
CompletionStage<Void> thenRun(Runnable action)
返回一个新的CompletionStage,当此阶段正常完成时,执行给定的操作。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
thenRunAsync
CompletionStage<Void> thenRunAsync(Runnable action)
返回一个新的CompletionStage,当此阶段正常完成时,使用此阶段的默认异步执行工具执行给定的操作。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
thenRunAsync
CompletionStage<Void> thenRunAsync(Runnable action, Executor executor)
返回一个新的CompletionStage,当此阶段正常完成时,使用提供的Executor执行给定的操作。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
action
- 完成返回的CompletionStage之前要执行的操作 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
thenCombine
<U,V> CompletionStage<V> thenCombine(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,执行两个结果作为所提供函数的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 其他CompletionStage结果的类型 -
V
- 函数的返回类型 - 参数
-
other
- 另一个CompletionStage -
fn
- 用于计算返回的CompletionStage值的函数 - 结果
- 新的CompletionStage
-
thenCombineAsync
<U,V> CompletionStage<V> thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用这个阶段的默认异步执行工具执行,其中两个结果作为所提供函数的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 其他CompletionStage结果的类型 -
V
- 函数的返回类型 - 参数
-
other
- 另一个CompletionStage -
fn
- 用于计算返回的CompletionStage值的函数 - 结果
- 新的CompletionStage
-
thenCombineAsync
<U,V> CompletionStage<V> thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn, Executor executor)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用提供的执行器执行,两个结果作为提供的函数的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 其他CompletionStage结果的类型 -
V
- 函数的返回类型 - 参数
-
other
- 另一个CompletionStage -
fn
- 用于计算返回的CompletionStage值的函数 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
thenAcceptBoth
<U> CompletionStage<Void> thenAcceptBoth(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,将执行两个结果作为提供的操作的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 其他CompletionStage结果的类型 - 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
thenAcceptBothAsync
<U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用这个阶段的默认异步执行工具执行,其中两个结果作为提供的操作的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 其他CompletionStage结果的类型 - 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
thenAcceptBothAsync
<U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action, Executor executor)
返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用提供的执行程序执行,其中两个结果作为提供的操作的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 其他CompletionStage结果的类型 - 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
runAfterBoth
CompletionStage<Void> runAfterBoth(CompletionStage<?> other, Runnable action)
返回一个新的CompletionStage,当此和另一个给定阶段都正常完成时,执行给定的操作。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
runAfterBothAsync
CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action)
返回一个新的CompletionStage,当此和另一个给定阶段都正常完成时,使用此阶段的默认异步执行工具执行给定的操作。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
runAfterBothAsync
CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action, Executor executor)
返回一个新的CompletionStage,当此和另一个给定阶段都正常完成时,使用提供的执行程序执行给定的操作。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
applyToEither
<U> CompletionStage<U> applyToEither(CompletionStage<? extends T> other, Function<? super T,U> fn)
返回一个新的CompletionStage,当这个或另一个给定的阶段正常完成时,将执行相应的结果作为所提供函数的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 函数的返回类型 - 参数
-
other
- 另一个CompletionStage -
fn
- 用于计算返回的CompletionStage值的函数 - 结果
- 新的CompletionStage
-
applyToEitherAsync
<U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn)
返回一个新的CompletionStage,当该阶段或其他给定阶段正常完成时,使用此阶段的默认异步执行工具执行,并将相应的结果作为所提供函数的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 函数的返回类型 - 参数
-
other
- 另一个CompletionStage -
fn
- 用于计算返回的CompletionStage值的函数 - 结果
- 新的CompletionStage
-
applyToEitherAsync
<U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn, Executor executor)
返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,使用提供的执行程序执行,并将相应的结果作为所提供函数的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数类型
-
U
- 函数的返回类型 - 参数
-
other
- 另一个CompletionStage -
fn
- 用于计算返回的CompletionStage值的函数 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
acceptEither
CompletionStage<Void> acceptEither(CompletionStage<? extends T> other, Consumer<? super T> action)
返回一个新的CompletionStage,当该或其他给定阶段正常完成时,将执行相应的结果作为所提供操作的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
acceptEitherAsync
CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action)
返回一个新的CompletionStage,当该阶段或其他给定阶段正常完成时,使用此阶段的默认异步执行工具执行,并将相应的结果作为所提供操作的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
other
- 其他CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
acceptEitherAsync
CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action, Executor executor)
返回一个新的CompletionStage,当此或其他给定阶段正常完成时,使用提供的执行程序执行,并将相应的结果作为所提供操作的参数。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
runAfterEither
CompletionStage<Void> runAfterEither(CompletionStage<?> other, Runnable action)
返回一个新的CompletionStage,当该阶段或其他给定阶段正常完成时,执行给定的操作。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
runAfterEitherAsync
CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action)
返回一个新的CompletionStage,当该阶段或其他给定阶段正常完成时,使用此阶段的默认异步执行工具执行给定的操作。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 - 结果
- 新的CompletionStage
-
runAfterEitherAsync
CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action, Executor executor)
返回一个新的CompletionStage,当此或其他给定阶段正常完成时,使用提供的执行程序执行给定的操作。 有关特殊完成的规则,请参阅CompletionStage
文档。- 参数
-
other
- 另一个CompletionStage -
action
- 完成返回的CompletionStage之前要执行的操作 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
thenCompose
<U> CompletionStage<U> thenCompose(Function<? super T,? extends CompletionStage<U>> fn)
返回一个新的CompletionStage,它完成的值与给定函数返回的CompletionStage相同。当此阶段正常完成时,将使用此阶段的结果作为参数调用给定函数,返回另一个CompletionStage。 当该阶段正常完成时,此方法返回的CompletionStage将以相同的值完成。
为确保进度,所提供的功能必须安排最终完成其结果。
该方法类似于
Optional.flatMap
和Stream.flatMap
。有关特殊完成的规则,请参阅
CompletionStage
文档。- 参数类型
-
U
- 返回的CompletionStage结果的类型 - 参数
-
fn
- 用于计算另一个CompletionStage的函数 - 结果
- 新的CompletionStage
-
thenComposeAsync
<U> CompletionStage<U> thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn)
返回一个新的CompletionStage,它使用与给定函数返回的CompletionStage相同的值完成,使用此阶段的默认异步执行工具执行。当此阶段正常完成时,将使用此阶段的结果作为参数调用给定函数,返回另一个CompletionStage。 当该阶段正常完成时,此方法返回的CompletionStage将以相同的值完成。
为确保进度,所提供的功能必须安排最终完成其结果。
有关特殊完成的规则,请参阅
CompletionStage
文档。- 参数类型
-
U
- 返回的CompletionStage结果的类型 - 参数
-
fn
- 用于计算另一个CompletionStage的函数 - 结果
- 新的CompletionStage
-
thenComposeAsync
<U> CompletionStage<U> thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn, Executor executor)
返回一个新的CompletionStage,它使用与给定函数返回的CompletionStage相同的值完成,使用提供的Executor执行。当此阶段正常完成时,将使用此阶段的结果作为参数调用给定函数,返回另一个CompletionStage。 当该阶段正常完成时,此方法返回的CompletionStage将以相同的值完成。
为确保进度,所提供的功能必须安排最终完成其结果。
有关特殊完成的规则,请参阅
CompletionStage
文档。- 参数类型
-
U
- 返回的CompletionStage结果的类型 - 参数
-
fn
- 用于计算另一个CompletionStage的函数 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
handle
<U> CompletionStage<U> handle(BiFunction<? super T,Throwable,? extends U> fn)
返回一个新的CompletionStage,当该阶段正常或异常完成时,将使用此阶段的结果和异常作为所提供函数的参数执行。当这个阶段完成时,调用给定函数的结果(或
null
如果没有)和此阶段的异常(或null
如果没有)作为参数,函数的结果用于完成返回的阶段。- 参数类型
-
U
- 函数的返回类型 - 参数
-
fn
- 用于计算返回的CompletionStage值的函数 - 结果
- 新的CompletionStage
-
handleAsync
<U> CompletionStage<U> handleAsync(BiFunction<? super T,Throwable,? extends U> fn)
返回一个新的CompletionStage,当该阶段正常或异常完成时,使用此阶段的默认异步执行工具执行,该阶段的结果和异常作为所提供函数的参数。当此阶段完成时,将使用结果(或
null
如果没有)和此阶段的异常(或null
如果没有)调用给定函数作为参数,并且函数的结果用于完成返回的阶段。- 参数类型
-
U
- 函数的返回类型 - 参数
-
fn
- 用于计算返回的CompletionStage值的函数 - 结果
- 新的CompletionStage
-
handleAsync
<U> CompletionStage<U> handleAsync(BiFunction<? super T,Throwable,? extends U> fn, Executor executor)
返回一个新的CompletionStage,当该阶段正常或异常完成时,使用提供的执行程序执行,该阶段的结果和异常作为所提供函数的参数。当此阶段完成时,将使用结果(或
null
如果没有)和此阶段的异常(或null
如果没有)调用给定函数作为参数,并且函数的结果用于完成返回的阶段。- 参数类型
-
U
- 函数的返回类型 - 参数
-
fn
- 用于计算返回的CompletionStage值的函数 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
whenComplete
CompletionStage<T> whenComplete(BiConsumer<? super T,? super Throwable> action)
返回与此阶段具有相同结果或异常的新CompletionStage,该阶段在此阶段完成时执行给定操作。当此阶段完成时,将使用结果(或
null
如果没有)和此阶段的异常(或null
如果没有)作为参数调用给定的操作。 操作返回时,返回的阶段完成。与方法
handle
不同,此方法不是为翻译完成结果而设计的,因此提供的操作不应抛出异常。 但是,如果是这样,则适用以下规则:如果此阶段正常完成但提供的操作引发异常,则返回的阶段将异常完成,并提供操作的异常。 或者,如果此阶段异常完成且提供的操作抛出异常,则返回的阶段将异常完成此阶段的异常。- 参数
-
action
- 要执行的操作 - 结果
- 新的CompletionStage
-
whenCompleteAsync
CompletionStage<T> whenCompleteAsync(BiConsumer<? super T,? super Throwable> action)
返回一个新的CompletionStage,其结果或异常与此阶段相同,在此阶段完成时使用此阶段的默认异步执行工具执行给定操作。当此阶段完成时,将使用结果(或
null
如果没有)和此阶段的异常(或null
如果没有)调用给定的操作作为参数。 操作返回时,返回的阶段完成。与方法
handleAsync
不同,此方法不是为翻译完成结果而设计的,因此提供的操作不应抛出异常。 但是,如果是这样,则适用以下规则:如果此阶段正常完成但提供的操作引发异常,则返回的阶段将异常完成,并提供操作的异常。 或者,如果此阶段异常完成且提供的操作抛出异常,则返回的阶段将异常完成此阶段的异常。- 参数
-
action
- 要执行的操作 - 结果
- 新的CompletionStage
-
whenCompleteAsync
CompletionStage<T> whenCompleteAsync(BiConsumer<? super T,? super Throwable> action, Executor executor)
返回一个新的CompletionStage,其结果或异常与此阶段相同,在此阶段完成时使用提供的Executor执行给定的操作。当此阶段完成时,将使用结果(或
null
如果没有)和此阶段的异常(或null
如果没有)调用给定的操作作为参数。 操作返回时,返回的阶段完成。与方法
handleAsync
不同,此方法不是为翻译完成结果而设计的,因此提供的操作不应抛出异常。 但是,如果是这样,则适用以下规则:如果此阶段正常完成但提供的操作引发异常,则返回的阶段将异常完成,并提供操作的异常。 或者,如果此阶段异常完成且提供的操作抛出异常,则返回的阶段将异常完成此阶段的异常。- 参数
-
action
- 要执行的操作 -
executor
- 用于异步执行的执行程序 - 结果
- 新的CompletionStage
-
exceptionally
CompletionStage<T> exceptionally(Function<Throwable,? extends T> fn)
返回一个新的CompletionStage,当该阶段异常完成时,将以此阶段的异常作为所提供函数的参数执行。 否则,如果此阶段正常完成,则返回的阶段也会以相同的值正常完成。- 参数
-
fn
- 如果此CompletionStage异常完成,则用于计算返回的CompletionStage的值的函数 - 结果
- 新的CompletionStage
-
toCompletableFuture
CompletableFuture<T> toCompletableFuture()
返回CompletableFuture
,保持与此阶段相同的完成属性。 如果此阶段已经是CompletableFuture,则此方法可能会返回此阶段。 否则,调用此方法可能与thenApply(x -> x)
等效,但返回类型为CompletableFuture
的实例。- 结果
- the CompletableFuture
-
-