- 类型参数:
-
T
- 阶段产生或消耗的值的类型
- 所有已知的实现类:
-
CompletableFuture
- 阶段执行的计算可以表示为Function、Consumer或Runnable(分别使用包括apply、accept或run在内的方法),具体取决于它是否需要参数和/或产生结果。例如:
stage.thenApply(x -> square(x)) .thenAccept(x -> System.out.print(x)) .thenRun(() -> System.out.println());
阶段计算的任何参数都是触发阶段计算的结果。
- 一个阶段的执行可能由单个阶段的完成触发,或者由两个阶段的任一个或两个阶段的完成触发。使用具有前缀then的方法安排对单个阶段的依赖关系。通过完成两个阶段的触发的那些可能合并它们的结果或效果,使用相应命名的方法。通过either触发的那些阶段不保证使用哪个结果或效果用于依赖阶段的计算。
- 阶段之间的依赖关系控制计算的触发,但不保证任何特定的顺序。此外,新阶段的计算可以以三种方式中的任何一种安排:默认执行、默认异步执行(使用具有后缀async的方法,这些方法使用阶段的默认异步执行设施)或自定义(通过提供的
Executor
)。默认和async模式的执行属性由CompletionStage实现指定,而不是由此接口指定。具有显式Executor参数的方法可能具有任意的执行属性,甚至可能不支持并发执行,但它们被安排以一种适应异步性的方式进行处理。 - 两种方法形式(
handle
和whenComplete
)支持无条件计算,无论触发阶段是正常完成还是异常完成。方法exceptionally
仅在触发阶段异常完成时支持计算,计算替换结果,类似于java的catch
关键字。在所有其他情况下,如果阶段的计算突然终止并出现(未检查的)异常或错误,则所有需要其完成的依赖阶段也将异常完成,其中一个CompletionException
保存异常作为其原因。如果一个阶段依赖于两个阶段中的both,并且两个都异常完成,则CompletionException可能对应于这些异常中的任一个。如果一个阶段依赖于两个其他阶段中的either,并且只有一个异常完成,不保证依赖阶段是正常完成还是异常完成。在方法whenComplete
的情况下,如果提供的操作本身遇到异常,则除非源阶段也异常完成,否则阶段将异常完成,并且源阶段的异常完成优先传播到依赖阶段。
所有方法遵循上述触发、执行和异常完成规范(不在各个方法规范中重复)。此外,用于传递完成结果(即,对于接受它们的类型为T
的参数)的参数可能为null,但为任何其他参数传递null值将导致抛出NullPointerException
。
方法形式handle
是创建连续阶段的最通用方式,无条件执行给定的计算,同时给出触发CompletionStage的结果和异常(如果有的话),并计算任意结果。方法whenComplete
类似,但保留触发阶段的结果而不计算新结果。因为阶段的正常结果可能为null
,所以这两种方法的计算结构应如下:
(result, exception) -> {
if (exception == null) {
// 触发阶段正常完成
} else {
// 触发阶段异常完成
}
}
此接口不定义用于初始创建、强制正常或异常完成、探测完成状态或结果、或等待阶段完成的方法。CompletionStage的实现可能提供实现这些效果的方法,视情况而定。方法toCompletableFuture()
通过提供一个通用的转换类型,实现了此接口的不同实现之间的互操作性。
- 自Java版本:
- 1.8
-
Method Summary
Modifier and TypeMethodDescriptionacceptEither
(CompletionStage<? extends T> other, Consumer<? super T> action) 返回一个新的CompletionStage,当此阶段或另一个给定阶段正常完成时,将使用相应的结果作为参数执行提供的操作。acceptEitherAsync
(CompletionStage<? extends T> other, Consumer<? super T> action) 返回一个新的CompletionStage,当此阶段或另一个给定阶段正常完成时,将使用此阶段的默认异步执行设施,将相应的结果作为参数执行提供的操作。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,当此阶段或另一个给定阶段正常完成时,将使用提供的执行器,将相应的结果作为参数执行提供的函数。exceptionally
(Function<Throwable, ? extends T> fn) 返回一个新的CompletionStage,当此阶段异常完成时,将使用此阶段的异常作为提供的函数的参数执行。default CompletionStage
<T> exceptionallyAsync
(Function<Throwable, ? extends T> fn) 返回一个新的CompletionStage,当此阶段异常完成时,将使用此阶段的异常作为提供的函数的参数执行,使用此阶段的默认异步执行设施。default CompletionStage
<T> exceptionallyAsync
(Function<Throwable, ? extends T> fn, Executor executor) 返回一个新的CompletionStage,当此阶段异常完成时,将使用此阶段的异常作为提供的函数的参数执行,使用提供的执行器。default CompletionStage
<T> exceptionallyCompose
(Function<Throwable, ? extends CompletionStage<T>> fn) 返回一个新的CompletionStage,当此阶段异常完成时,将使用应用于此阶段异常的提供的函数的结果进行组合。default CompletionStage
<T> exceptionallyComposeAsync
(Function<Throwable, ? extends CompletionStage<T>> fn) 返回一个新的CompletionStage,当此阶段异常完成时,将使用应用于此阶段异常的提供的函数的结果进行组合,使用此阶段的默认异步执行设施。default CompletionStage
<T> exceptionallyComposeAsync
(Function<Throwable, ? extends CompletionStage<T>> fn, Executor executor) 返回一个新的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,当此阶段正常或异常完成时,将使用提供的执行器,将此阶段的结果和异常作为提供的函数的参数执行。runAfterBoth
(CompletionStage<?> other, Runnable action) 返回一个新的CompletionStage,当此和另一个给定阶段都正常完成时,执行给定操作。runAfterBothAsync
(CompletionStage<?> other, Runnable action) 返回一个新的CompletionStage,当此和另一个给定阶段都正常完成时,使用此阶段的默认异步执行设施执行给定操作。runAfterBothAsync
(CompletionStage<?> other, Runnable action, Executor executor) 返回一个新的CompletionStage,当此和另一个给定阶段都正常完成时,使用提供的执行器执行给定操作。runAfterEither
(CompletionStage<?> other, Runnable action) 返回一个新的CompletionStage,当此或另一个给定阶段正常完成时,执行给定操作。runAfterEitherAsync
(CompletionStage<?> other, Runnable action) 返回一个新的CompletionStage,当此或另一个给定阶段正常完成时,使用此阶段的默认异步执行设施执行给定操作。runAfterEitherAsync
(CompletionStage<?> other, Runnable action, Executor executor) 返回一个新的CompletionStage,当此或另一个给定阶段正常完成时,使用提供的执行器执行给定操作。thenAccept
(Consumer<? super T> action) 返回一个新的CompletionStage,当此阶段正常完成时,将此阶段的结果作为提供的操作的参数执行。thenAcceptAsync
(Consumer<? super T> action) 返回一个新的CompletionStage,当此阶段正常完成时,使用此阶段的默认异步执行设施,将此阶段的结果作为提供的操作的参数执行。thenAcceptAsync
(Consumer<? super T> action, Executor executor) 返回一个新的CompletionStage,当此阶段正常完成时,使用提供的执行器,将此阶段的结果作为提供的操作的参数执行。<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> 返回一个新的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,当此阶段正常完成时,执行给定的操作。thenRunAsync
(Runnable action) 返回一个新的CompletionStage,当此阶段正常完成时,使用此阶段的默认异步执行设施执行给定的操作。thenRunAsync
(Runnable action, Executor executor) 返回一个新的CompletionStage,当此阶段正常完成时,使用提供的Executor执行给定的操作。返回一个维护与此阶段相同完成属性的CompletableFuture。whenComplete
(BiConsumer<? super T, ? super Throwable> action) 返回一个新的CompletionStage,其结果或异常与此阶段相同,当此阶段完成时执行给定的操作。whenCompleteAsync
(BiConsumer<? super T, ? super Throwable> action) 返回一个新的CompletionStage,其结果或异常与此阶段相同,当此阶段完成时使用此阶段的默认异步执行设施执行给定的操作。whenCompleteAsync
(BiConsumer<? super T, ? super Throwable> action, Executor executor) 返回一个新的CompletionStage,其结果或异常与此阶段相同,当此阶段完成时使用提供的Executor执行给定的操作。
-
Method Details
-
thenApply
返回一个新的CompletionStage,当此阶段正常完成时,将使用此阶段的结果作为提供的函数的参数执行。此方法类似于Optional.map和Stream.map。
请参阅CompletionStage文档以了解异常完成的规则。
- 类型参数:
-
U
- 函数的返回类型 - 参数:
-
fn
- 用于计算返回的CompletionStage值的函数 - 返回:
- 新的CompletionStage
-
thenApplyAsync
返回一个新的CompletionStage,当此阶段正常完成时,将使用此阶段的默认异步执行设施执行,将此阶段的结果作为提供的函数的参数。请参阅CompletionStage文档以了解异常完成的规则。- 类型参数:
-
U
- 函数的返回类型 - 参数:
-
fn
- 用于计算返回的CompletionStage值的函数 - 返回:
- 新的CompletionStage
-
thenApplyAsync
返回一个新的CompletionStage,当此阶段正常完成时,将使用提供的Executor执行,将此阶段的结果作为提供的函数的参数。请参阅CompletionStage文档以了解异常完成的规则。- 类型参数:
-
U
- 函数的返回类型 - 参数:
-
fn
- 用于计算返回的CompletionStage值的函数 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
-
thenAccept
返回一个新的CompletionStage,当此阶段正常完成时,将使用此阶段的结果作为提供的操作的参数执行。请参阅CompletionStage文档以了解异常完成的规则。- 参数:
-
action
- 在完成返回的CompletionStage之前执行的操作 - 返回:
- 新的CompletionStage
-
thenAcceptAsync
返回一个新的CompletionStage,当此阶段正常完成时,将使用此阶段的默认异步执行设施执行,将此阶段的结果作为提供的操作的参数。请参阅CompletionStage文档以了解异常完成的规则。- 参数:
-
action
- 在完成返回的CompletionStage之前执行的操作 - 返回:
- 新的CompletionStage
-
thenAcceptAsync
返回一个新的CompletionStage,当此阶段正常完成时,将使用提供的Executor执行,将此阶段的结果作为提供的操作的参数。请参阅CompletionStage文档以了解异常完成的规则。- 参数:
-
action
- 在完成返回的CompletionStage之前执行的操作 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
-
thenRun
返回一个新的CompletionStage,当此阶段正常完成时,执行给定的操作。请参阅CompletionStage文档以了解异常完成的规则。- 参数:
-
action
- 在完成返回的CompletionStage之前执行的操作 - 返回:
- 新的CompletionStage
-
thenRunAsync
返回一个新的CompletionStage,当此阶段正常完成时,使用此阶段的默认异步执行设施执行给定的操作。请参阅CompletionStage文档以了解异常完成的规则。- 参数:
-
action
- 在完成返回的CompletionStage之前执行的操作 - 返回:
- 新的CompletionStage
-
thenRunAsync
返回一个新的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和另一个给定的阶段都正常完成时,将使用两个结果作为参数执行提供的操作。请参阅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和另一个给定的阶段都正常完成时,将使用此阶段的默认异步执行设施执行,将两个结果作为参数传递给提供的操作。请参阅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和另一个给定的阶段都正常完成时,将使用提供的执行器执行,将两个结果作为参数传递给提供的操作。请参阅CompletionStage
文档,了解异常完成的规则。- 类型参数:
-
U
- 另一个CompletionStage的结果类型 - 参数:
-
other
- 另一个CompletionStage -
action
- 在完成返回的CompletionStage之前执行的操作 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
-
runAfterBoth
返回一个新的CompletionStage,当此CompletionStage和另一个给定的阶段都正常完成时,执行给定的操作。请参阅CompletionStage
文档,了解异常完成的规则。- 参数:
-
other
- 另一个CompletionStage -
action
- 在完成返回的CompletionStage之前执行的操作 - 返回:
- 新的CompletionStage
-
runAfterBothAsync
返回一个新的CompletionStage,当此CompletionStage和另一个给定的阶段都正常完成时,使用此阶段的默认异步执行设施执行给定的操作。请参阅CompletionStage
文档,了解异常完成的规则。- 参数:
-
other
- 另一个CompletionStage -
action
- 在完成返回的CompletionStage之前执行的操作 - 返回:
- 新的CompletionStage
-
runAfterBothAsync
CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action, Executor executor) 返回一个新的CompletionStage,当此CompletionStage和另一个给定的阶段都正常完成时,使用提供的执行器执行给定的操作。请参阅CompletionStage
文档,了解异常完成的规则。- 参数:
-
other
- 另一个CompletionStage -
action
- 在完成返回的CompletionStage之前执行的操作 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
-
applyToEither
返回一个新的CompletionStage,当此CompletionStage或另一个给定的阶段正常完成时,将使用相应的结果作为参数执行提供的函数。请参阅CompletionStage
文档,了解异常完成的规则。- 类型参数:
-
U
- 函数的返回类型 - 参数:
-
other
- 另一个CompletionStage -
fn
- 用于计算返回的CompletionStage值的函数 - 返回:
- 新的CompletionStage
-
applyToEitherAsync
<U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T, U> fn) 返回一个新的CompletionStage,当此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或另一个给定的阶段正常完成时,将使用提供的执行器执行,将相应的结果作为参数传递给提供的函数。请参阅CompletionStage
文档,了解异常完成的规则。- 类型参数:
-
U
- 函数的返回类型 - 参数:
-
other
- 另一个CompletionStage -
fn
- 用于计算返回的CompletionStage值的函数 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
-
acceptEither
返回一个新的CompletionStage,当此CompletionStage或另一个给定的阶段正常完成时,将使用相应的结果作为参数执行提供的操作。请参阅CompletionStage
文档,了解异常完成的规则。- 参数:
-
other
- 另一个CompletionStage -
action
- 在完成返回的CompletionStage之前执行的操作 - 返回:
- 新的CompletionStage
-
acceptEitherAsync
CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action) 返回一个新的CompletionStage,当此CompletionStage或另一个给定的阶段正常完成时,将使用此阶段的默认异步执行设施执行,将相应的结果作为参数传递给提供的操作。请参阅CompletionStage
文档,了解异常完成的规则。- 参数:
-
other
- 另一个CompletionStage -
action
- 在完成返回的CompletionStage之前执行的操作 - 返回:
- 新的CompletionStage
-
acceptEitherAsync
CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action, Executor executor) 返回一个新的CompletionStage,当此CompletionStage或另一个给定的阶段正常完成时,将使用提供的执行器执行,将相应的结果作为参数传递给提供的操作。请参阅CompletionStage
文档,了解异常完成的规则。- 参数:
-
other
- 另一个CompletionStage -
action
- 在完成返回的CompletionStage之前执行的操作 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
-
runAfterEither
返回一个新的CompletionStage,当此CompletionStage或另一个给定的阶段正常完成时,执行给定的操作。请参阅CompletionStage
文档,了解异常完成的规则。- 参数:
-
other
- 另一个CompletionStage -
action
- 在完成返回的CompletionStage之前执行的操作 - 返回:
- 新的CompletionStage
-
runAfterEitherAsync
返回一个新的CompletionStage,当此CompletionStage或另一个给定的阶段正常完成时,使用此阶段的默认异步执行设施执行给定的操作。请参阅CompletionStage
文档,了解异常完成的规则。- 参数:
-
other
- 另一个CompletionStage -
action
- 在完成返回的CompletionStage之前执行的操作 - 返回:
- 新的CompletionStage
-
runAfterEitherAsync
CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action, Executor executor) 返回一个新的CompletionStage,当此CompletionStage或另一个给定的阶段正常完成时,使用提供的执行器执行给定的操作。请参阅CompletionStage
文档,了解异常完成的规则。- 参数:
-
other
- 另一个CompletionStage -
action
- 在完成返回的CompletionStage之前执行的操作 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
-
thenCompose
返回一个新的CompletionStage,其完成值与给定函数返回的CompletionStage相同。当此阶段正常完成时,将使用此阶段的结果作为参数调用给定函数,返回另一个CompletionStage。当该阶段正常完成时,此方法返回的CompletionStage将以相同的值完成。
为确保进展,提供的函数必须安排其结果的最终完成。
此方法类似于
Optional.flatMap
和Stream.flatMap
。请参阅
CompletionStage
文档,了解异常完成的规则。- 类型参数:
-
U
- 返回的CompletionStage结果的类型 - 参数:
-
fn
- 用于计算另一个CompletionStage的函数 - 返回:
- 新的CompletionStage
-
thenComposeAsync
返回一个新的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,其完成值与使用提供的Executor执行的给定函数返回的CompletionStage相同。当此阶段正常完成时,将使用此阶段的结果作为参数调用给定函数,返回另一个CompletionStage。当该阶段正常完成时,此方法返回的CompletionStage将以相同的值完成。
为确保进展,提供的函数必须安排其结果的最终完成。
请参阅
CompletionStage
文档,了解异常完成的规则。- 类型参数:
-
U
- 返回的CompletionStage结果的类型 - 参数:
-
fn
- 用于计算另一个CompletionStage的函数 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
-
handle
返回一个新的CompletionStage,当此阶段正常或异常完成时,将使用此阶段的结果和异常作为提供的函数的参数执行。当此阶段完成时,将使用此阶段的结果(如果没有则为
null
)和异常(如果没有则为null
)作为参数调用给定函数,并使用函数的结果完成返回的阶段。- 类型参数:
-
U
- 函数的返回类型 - 参数:
-
fn
- 用于计算返回的CompletionStage值的函数 - 返回:
- 新的CompletionStage
-
handleAsync
返回一个新的CompletionStage,当此阶段正常或异常完成时,将使用此阶段的结果和异常作为提供的函数的参数使用此阶段的默认异步执行设施执行。当此阶段完成时,将使用此阶段的结果(如果没有则为
null
)和异常(如果没有则为null
)作为参数调用给定函数,并使用函数的结果完成返回的阶段。- 类型参数:
-
U
- 函数的返回类型 - 参数:
-
fn
- 用于计算返回的CompletionStage值的函数 - 返回:
- 新的CompletionStage
-
handleAsync
<U> CompletionStage<U> handleAsync(BiFunction<? super T, Throwable, ? extends U> fn, Executor executor) 返回一个新的CompletionStage,当此阶段正常或异常完成时,将使用此阶段的结果和异常作为提供的函数的参数使用提供的Executor执行。当此阶段完成时,将使用此阶段的结果(如果没有则为
null
)和异常(如果没有则为null
)作为参数调用给定函数,并使用函数的结果完成返回的阶段。- 类型参数:
-
U
- 函数的返回类型 - 参数:
-
fn
- 用于计算返回的CompletionStage值的函数 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
-
whenComplete
返回一个新的CompletionStage,其结果或异常与此阶段相同,当此阶段完成时执行给定操作。当此阶段完成时,将使用此阶段的结果(如果没有则为
null
)和异常(如果没有则为null
)作为参数调用给定操作。当操作返回时,返回的阶段完成。与方法
handle
不同,此方法不设计为转换完成结果,因此提供的操作不应引发异常。但是,如果确实引发异常,则适用以下规则:如果此阶段正常完成但提供的操作引发异常,则返回的阶段将以提供的操作的异常异常完成。或者,如果此阶段异常完成且提供的操作引发异常,则返回的阶段将以此阶段的异常异常完成。- 参数:
-
action
- 要执行的操作 - 返回:
- 新的CompletionStage
-
whenCompleteAsync
返回一个新的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,当此阶段异常完成时,将使用此阶段的异常作为提供的函数的参数执行。否则,如果此阶段正常完成,则返回的阶段也将以相同的值正常完成。- 参数:
-
fn
- 用于计算返回的CompletionStage值的函数,如果此CompletionStage异常完成 - 返回:
- 新的CompletionStage
-
exceptionallyAsync
返回一个新的CompletionStage,当此阶段异常完成时,将使用此阶段的异常作为提供的函数的参数执行,使用此阶段的默认异步执行设施。否则,如果此阶段正常完成,则返回的阶段也将以相同的值正常完成。- 实现要求:
-
默认实现调用
handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)
,在异常时转发到handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)
,然后对结果使用thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>)
。 - 参数:
-
fn
- 用于计算返回的CompletionStage值的函数,如果此CompletionStage异常完成 - 返回:
- 新的CompletionStage
- 自:
- 12
-
exceptionallyAsync
default CompletionStage<T> exceptionallyAsync(Function<Throwable, ? extends T> fn, Executor executor) 返回一个新的CompletionStage,当这个阶段异常完成时,使用提供的函数将这个阶段的异常作为参数执行,并使用提供的Executor。否则,如果这个阶段正常完成,则返回的阶段也会以相同的值正常完成。- 实现要求:
-
默认实现调用
handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)
,在异常时转发到handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)
,然后对结果调用thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>)
。 - 参数:
-
fn
- 如果这个CompletionStage异常完成,则用于计算返回的CompletionStage值的函数 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
- 自 JDK 版本:
- 12
-
exceptionallyCompose
default CompletionStage<T> exceptionallyCompose(Function<Throwable, ? extends CompletionStage<T>> fn) 返回一个新的CompletionStage,当这个阶段异常完成时,使用提供的函数应用于这个阶段的异常来组成结果。- 实现要求:
-
默认实现调用
handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)
,在异常时调用给定的函数,然后对结果调用thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>)
。 - 参数:
-
fn
- 如果这个CompletionStage异常完成,则用于计算返回的CompletionStage值的函数 - 返回:
- 新的CompletionStage
- 自 JDK 版本:
- 12
-
exceptionallyComposeAsync
default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn) 返回一个新的CompletionStage,当这个阶段异常完成时,使用提供的函数应用于这个阶段的异常来组成结果,并使用这个阶段的默认异步执行设施。- 实现要求:
-
默认实现调用
handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)
,在异常时转发到handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)
,然后对结果调用thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>)
。 - 参数:
-
fn
- 如果这个CompletionStage异常完成,则用于计算返回的CompletionStage值的函数 - 返回:
- 新的CompletionStage
- 自 JDK 版本:
- 12
-
exceptionallyComposeAsync
default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn, Executor executor) 返回一个新的CompletionStage,当这个阶段异常完成时,使用提供的函数应用于这个阶段的异常来组成结果,并使用提供的Executor。- 实现要求:
-
默认实现调用
handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)
,在异常时转发到handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)
,然后对结果调用thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>)
。 - 参数:
-
fn
- 如果这个CompletionStage异常完成,则用于计算返回的CompletionStage值的函数 -
executor
- 用于异步执行的执行器 - 返回:
- 新的CompletionStage
- 自 JDK 版本:
- 12
-
toCompletableFuture
CompletableFuture<T> toCompletableFuture()返回一个CompletableFuture
,保持与这个阶段相同的完成属性。如果这个阶段已经是一个CompletableFuture,则此方法可能返回这个阶段本身。否则,调用此方法的效果可能等效于thenApply(x -> x)
,但返回一个类型为CompletableFuture
的实例。- 返回:
- CompletableFuture
-