模块 java.base

接口 CompletionStage<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 的方法安排单个阶段上的依赖项。那些由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
  • 方法详情

    • 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,当这个阶段正常完成时,使用提供的执行器执行给定的操作。有关异常完成的规则,请参阅 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 文档。

      类型参数:
      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
    • 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
      自从:
      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 的实例。
      返回:
      可完成的未来