Module java.base

Interface CompletionStage<T>

类型参数:
T - 阶段产生或消耗的值的类型
所有已知的实现类:
CompletableFuture

public interface CompletionStage<T>
一个可能是异步计算的阶段,当另一个CompletionStage完成时执行操作或计算值。一个阶段在其计算终止时完成,但这可能会触发其他依赖的阶段。此接口中定义的功能仅采用几种基本形式,这些形式扩展为一组更大的方法,以捕获一系列使用样式:
  • 阶段执行的计算可以表示为Function、Consumer或Runnable(分别使用包括applyacceptrun在内的方法),具体取决于它是否需要参数和/或产生结果。例如:
     
     stage.thenApply(x -> square(x))
          .thenAccept(x -> System.out.print(x))
          .thenRun(() -> System.out.println());
    另一种形式(compose)允许从返回完成阶段的函数构建计算管道。

    阶段计算的任何参数都是触发阶段计算的结果。

  • 一个阶段的执行可能由单个阶段的完成触发,或者由两个阶段的任一个或两个阶段的完成触发。使用具有前缀then的方法安排对单个阶段的依赖关系。通过完成两个阶段的触发的那些可能合并它们的结果或效果,使用相应命名的方法。通过either触发的那些阶段不保证使用哪个结果或效果用于依赖阶段的计算。
  • 阶段之间的依赖关系控制计算的触发,但不保证任何特定的顺序。此外,新阶段的计算可以以三种方式中的任何一种安排:默认执行、默认异步执行(使用具有后缀async的方法,这些方法使用阶段的默认异步执行设施)或自定义(通过提供的Executor)。默认和async模式的执行属性由CompletionStage实现指定,而不是由此接口指定。具有显式Executor参数的方法可能具有任意的执行属性,甚至可能不支持并发执行,但它们被安排以一种适应异步性的方式进行处理。
  • 两种方法形式(handlewhenComplete)支持无条件计算,无论触发阶段是正常完成还是异常完成。方法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 Details

    • 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和另一个给定的阶段都正常完成时,将使用两个结果作为参数执行提供的操作。请参阅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<Void> runAfterBoth(CompletionStage<?> other, Runnable action)
      返回一个新的CompletionStage,当此CompletionStage和另一个给定的阶段都正常完成时,执行给定的操作。请参阅CompletionStage文档,了解异常完成的规则。
      参数:
      other - 另一个CompletionStage
      action - 在完成返回的CompletionStage之前执行的操作
      返回:
      新的CompletionStage
    • runAfterBothAsync

      CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action)
      返回一个新的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

      <U> CompletionStage<U> applyToEither(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)
      返回一个新的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<Void> acceptEither(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)
      返回一个新的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<Void> runAfterEither(CompletionStage<?> other, Runnable action)
      返回一个新的CompletionStage,当此CompletionStage或另一个给定的阶段正常完成时,执行给定的操作。请参阅CompletionStage文档,了解异常完成的规则。
      参数:
      other - 另一个CompletionStage
      action - 在完成返回的CompletionStage之前执行的操作
      返回:
      新的CompletionStage
    • runAfterEitherAsync

      CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action)
      返回一个新的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

      <U> CompletionStage<U> thenCompose(Function<? super T,? extends CompletionStage<U>> fn)
      返回一个新的CompletionStage,其完成值与给定函数返回的CompletionStage相同。

      当此阶段正常完成时,将使用此阶段的结果作为参数调用给定函数,返回另一个CompletionStage。当该阶段正常完成时,此方法返回的CompletionStage将以相同的值完成。

      为确保进展,提供的函数必须安排其结果的最终完成。

      此方法类似于Optional.flatMapStream.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,其完成值与使用提供的Executor执行的给定函数返回的CompletionStage相同。

      当此阶段正常完成时,将使用此阶段的结果作为参数调用给定函数,返回另一个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,当此阶段正常或异常完成时,将使用此阶段的结果和异常作为提供的函数的参数使用提供的Executor执行。

      当此阶段完成时,将使用此阶段的结果(如果没有则为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
    • exceptionallyAsync

      default CompletionStage<T> exceptionallyAsync(Function<Throwable,? extends 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
    • 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