- 所有已知的实现类:
CompletableFuture
- 阶段执行的计算可以表示为 Function、Consumer 或 Runnable(使用名称分别包括 apply、accept 或 run 的方法),具体取决于它是否需要参数和/或产生结果。例如:
stage.thenApply(x -> square(x)) .thenAccept(x -> System.out.print(x)) .thenRun(() -> System.out.println());
阶段计算的任何参数都是触发阶段计算的结果。
- 一个阶段的执行可以由单个阶段或两个阶段的完成或两个阶段中的任何一个的完成触发。使用前缀为 then 的方法安排单个阶段上的依赖项。那些由both完成两个阶段触发的可能combine它们的结果或效果,使用相应命名的方法。由两个阶段的 either 触发的那些不保证哪些结果或效果用于相关阶段的计算。
- 阶段之间的依赖关系控制计算的触发,但不保证任何特定的顺序。此外,新阶段的计算的执行可以按以下三种方式中的任何一种进行安排:默认执行、默认异步执行(使用后缀为 async 的方法使用该阶段的默认异步执行工具)或自定义(通过提供的
Executor
)。默认和异步模式的执行属性由 CompletionStage 实现指定,而不是此接口。具有显式 Executor 参数的方法可能具有任意执行属性,甚至可能不支持并发执行,但以适应异步的方式安排处理。 - 两种方法形式(
handle
和whenComplete
)支持无条件计算触发阶段是正常完成还是异常完成。方法exceptionally
仅在触发阶段异常完成时才支持计算,计算替换结果,类似于javacatch
关键字。在所有其他情况下,如果一个阶段的计算因(未经检查的)异常或错误而突然终止,则所有需要其完成的相关阶段也会异常完成,CompletionException
将异常作为其原因。如果一个阶段依赖于两个阶段的both,并且都异常完成,则 CompletionException 可能对应于这些异常中的任何一个。如果一个阶段依赖于其他两个阶段的either,并且只有其中一个阶段异常完成,则无法保证依赖阶段是正常完成还是异常完成。在方法whenComplete
的情况下,当提供的操作本身遇到异常时,除非源阶段也异常完成,否则该阶段会异常完成并出现此异常,在这种情况下,源阶段的异常完成将被优先考虑并传播到从属阶段阶段。
所有方法均遵守上述触发、执行和异常完成规范(个别方法规范不再赘述)。此外,虽然用于为接受它们的方法传递完成结果(即,对于类型为 T
的参数)的参数可能为 null,但为任何其他参数传递 null 值将导致抛出 NullPointerException
。
方法形式 handle
是创建延续阶段的最通用方法,无条件地执行给定触发 CompletionStage 的结果和异常(如果有)的计算,并计算任意结果。方法 whenComplete
类似,但保留触发阶段的结果而不是计算新结果。因为阶段的正常结果可能是 null
,所以这两种方法都应该有这样的计算结构:
(result, exception) -> {
if (exception == null) {
// triggering stage completed normally
} else {
// triggering stage completed exceptionally
}
}
该接口未定义初始创建、正常或异常强制完成、探测完成状态或结果或等待阶段完成的方法。 CompletionStage 的实现可以酌情提供实现此类效果的方法。方法 toCompletableFuture()
通过提供通用转换类型来实现此接口的不同实现之间的互操作性。
- 自从:
- 1.8
-
方法总结
修饰符和类型方法描述acceptEither
(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) 时,使用提供的 Executor 将这个阶段的异常作为提供的函数的参数执行。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,当这个阶段正常完成时,使用提供的 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>
返回一个新的 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相同,使用此阶段的默认异步执行工具执行。<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,当这个阶段正常完成时,使用提供的执行器执行给定的操作。返回一个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 执行给定的操作。
-
方法详情
-
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,当这个阶段正常完成时,使用提供的执行器执行给定的操作。有关异常完成的规则,请参阅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
- 另一个 CompletionStagefn
- 用于计算返回的 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
- 另一个 CompletionStagefn
- 用于计算返回的 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
- 另一个 CompletionStagefn
- 用于计算返回的 CompletionStage 值的函数executor
- 用于异步执行的执行程序- 返回:
- 新的 CompletionStage
-
thenAcceptBoth
<U> CompletionStage <Void > thenAcceptBoth(CompletionStage <? extends U> other, BiConsumer <? super T , ? super U> action) 返回一个新的 CompletionStage,当这个和另一个给定阶段都正常完成时,将执行两个结果作为提供的操作的参数。有关异常完成的规则,请参阅CompletionStage
文档。- 类型参数:
U
- 其他 CompletionStage 结果的类型- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作- 返回:
- 新的 CompletionStage
-
thenAcceptBothAsync
<U> CompletionStage <Void > thenAcceptBothAsync(CompletionStage <? extends U> other, BiConsumer <? super T , ? super U> action) 返回一个新的 CompletionStage,当这个和另一个给定阶段都正常完成时,使用这个阶段的默认异步执行工具执行,两个结果作为提供的操作的参数。有关异常完成的规则,请参阅CompletionStage
文档。- 类型参数:
U
- 其他 CompletionStage 结果的类型- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作- 返回:
- 新的 CompletionStage
-
thenAcceptBothAsync
<U> CompletionStage <Void > thenAcceptBothAsync(CompletionStage <? extends U> other, BiConsumer <? super T , ? super U> action, Executor executor) 返回一个新的 CompletionStage,当这个和另一个给定阶段都正常完成时,使用提供的执行器执行,两个结果作为提供的操作的参数。有关异常完成的规则,请参阅CompletionStage
文档。- 类型参数:
U
- 其他 CompletionStage 结果的类型- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作executor
- 用于异步执行的执行程序- 返回:
- 新的 CompletionStage
-
runAfterBoth
返回一个新的 CompletionStage,当这个阶段和另一个给定阶段都正常完成时,执行给定的操作。有关异常完成的规则,请参阅CompletionStage
文档。- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作- 返回:
- 新的 CompletionStage
-
runAfterBothAsync
返回一个新的 CompletionStage,当这个和另一个给定阶段都正常完成时,使用这个阶段的默认异步执行工具执行给定的操作。有关异常完成的规则,请参阅CompletionStage
文档。- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作- 返回:
- 新的 CompletionStage
-
runAfterBothAsync
CompletionStage <Void > runAfterBothAsync(CompletionStage <?> other, Runnable action, Executor executor) 返回一个新的 CompletionStage,当这个阶段和另一个给定阶段都正常完成时,使用提供的执行程序执行给定的操作。有关异常完成的规则,请参阅CompletionStage
文档。- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作executor
- 用于异步执行的执行程序- 返回:
- 新的 CompletionStage
-
applyToEither
<U> CompletionStage <U> applyToEither(CompletionStage <? extends T > other, Function <? super T , U> fn) 返回一个新的 CompletionStage,当这个或另一个给定阶段正常完成时,将以相应的结果作为所提供函数的参数执行。有关异常完成的规则,请参阅CompletionStage
文档。- 类型参数:
U
- 函数的返回类型- 参数:
other
- 另一个 CompletionStagefn
- 用于计算返回的 CompletionStage 值的函数- 返回:
- 新的 CompletionStage
-
applyToEitherAsync
<U> CompletionStage <U> applyToEitherAsync(CompletionStage <? extends T > other, Function <? super T , U> fn) 返回一个新的 CompletionStage,当这个或另一个给定阶段正常完成时,使用此阶段的默认异步执行工具执行,并将相应的结果作为提供函数的参数。有关异常完成的规则,请参阅CompletionStage
文档。- 类型参数:
U
- 函数的返回类型- 参数:
other
- 另一个 CompletionStagefn
- 用于计算返回的 CompletionStage 值的函数- 返回:
- 新的 CompletionStage
-
applyToEitherAsync
<U> CompletionStage <U> applyToEitherAsync(CompletionStage <? extends T > other, Function <? super T , U> fn, Executor executor) 返回一个新的 CompletionStage,当这个或另一个给定阶段正常完成时,使用提供的执行器执行,并将相应的结果作为提供函数的参数。有关异常完成的规则,请参阅CompletionStage
文档。- 类型参数:
U
- 函数的返回类型- 参数:
other
- 另一个 CompletionStagefn
- 用于计算返回的 CompletionStage 值的函数executor
- 用于异步执行的执行程序- 返回:
- 新的 CompletionStage
-
acceptEither
CompletionStage <Void > acceptEither(CompletionStage <? extends T > other, Consumer <? super T > action) 返回一个新的 CompletionStage,当这个或另一个给定阶段正常完成时,将以相应的结果作为提供的操作的参数执行。有关异常完成的规则,请参阅CompletionStage
文档。- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作- 返回:
- 新的 CompletionStage
-
acceptEitherAsync
CompletionStage <Void > acceptEitherAsync(CompletionStage <? extends T > other, Consumer <? super T > action) 返回一个新的 CompletionStage,当这个或另一个给定阶段正常完成时,使用此阶段的默认异步执行工具执行,并将相应的结果作为提供的操作的参数。有关异常完成的规则,请参阅CompletionStage
文档。- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作- 返回:
- 新的 CompletionStage
-
acceptEitherAsync
CompletionStage <Void > acceptEitherAsync(CompletionStage <? extends T > other, Consumer <? super T > action, Executor executor) 返回一个新的 CompletionStage,当这个或另一个给定阶段正常完成时,使用提供的执行器执行,并将相应的结果作为提供的操作的参数。有关异常完成的规则,请参阅CompletionStage
文档。- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作executor
- 用于异步执行的执行程序- 返回:
- 新的 CompletionStage
-
runAfterEither
返回一个新的 CompletionStage,当这个或另一个给定阶段正常完成时,它会执行给定的操作。有关异常完成的规则,请参阅CompletionStage
文档。- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作- 返回:
- 新的 CompletionStage
-
runAfterEitherAsync
返回一个新的 CompletionStage,当这个或另一个给定阶段正常完成时,使用这个阶段的默认异步执行工具执行给定的操作。有关异常完成的规则,请参阅CompletionStage
文档。- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作- 返回:
- 新的 CompletionStage
-
runAfterEitherAsync
CompletionStage <Void > runAfterEitherAsync(CompletionStage <?> other, Runnable action, Executor executor) 返回一个新的 CompletionStage,当这个或另一个给定阶段正常完成时,使用提供的执行程序执行给定的操作。有关异常完成的规则,请参阅CompletionStage
文档。- 参数:
other
- 另一个 CompletionStageaction
- 在完成返回的 CompletionStage 之前执行的操作executor
- 用于异步执行的执行程序- 返回:
- 新的 CompletionStage
-
thenCompose
返回一个新的 CompletionStage,它的完成值与给定函数返回的 CompletionStage 相同。当这个阶段正常完成时,给定的函数被调用,这个阶段的结果作为参数,返回另一个 CompletionStage。当该阶段正常完成时,此方法返回的 CompletionStage 将以相同的值完成。
为确保进度,提供的函数必须安排其结果的最终完成。
此方法类似于
Optional.flatMap
和Stream.flatMap
。有关异常完成的规则,请参阅
CompletionStage
文档。- 类型参数:
U
- 返回的 CompletionStage 结果的类型- 参数:
fn
- 用于计算另一个 CompletionStage 的函数- 返回:
- 新的 CompletionStage
-
thenComposeAsync
给定函数返回的 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
返回一个新的 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,当此阶段正常或异常完成时,使用提供的执行程序执行该阶段的结果和异常作为提供函数的参数。当这个阶段完成时,将调用给定的函数,并将该阶段的结果(或
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
- 自从:
- 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
- 自从:
- 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
- 自从:
- 12
-
exceptionallyComposeAsync
default CompletionStage <T > exceptionallyComposeAsync(Function <Throwable , ? extends CompletionStage <T >> fn, Executor executor) 返回一个新的 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 的函数executor
- 用于异步执行的执行程序- 返回:
- 新的 CompletionStage
- 自从:
- 12
-
toCompletableFuture
CompletableFuture <T > toCompletableFuture()返回一个CompletableFuture
维护与此阶段相同的完成属性。如果这个阶段已经是一个 CompletableFuture,这个方法可能会返回这个阶段本身。否则,此方法的调用可能等效于thenApply(x -> x)
,但返回类型为CompletableFuture
的实例。- 返回:
- 可完成的未来
-