Module  java.base
软件包  java.util.concurrent

Class CompletableFuture<T>

  • 参数类型
    T - 未来 joinget方法返回的结果类型
    All Implemented Interfaces:
    CompletionStage<T>Future<T>


    public class CompletableFuture<T>
    extends Object
    implements Future<T>, CompletionStage<T>
    A Future可以明确完成(设置其值和状态),并可用作CompletionStage ,支持在其完成时触发的依赖功能和操作。

    当两个或多个线程试图completecompleteExceptionally ,或cancel一个CompletableFuture,只有一个成功。

    除了这些直接操作状态和结果的相关方法外,CompletableFuture还实现了接口CompletionStage具有以下策略:

    • 异步方法的依赖完成提供的操作可以由完成当前CompletableFuture的线程或完成方法的任何其他调用者执行。
    • 所有不带显式Executor参数的异步方法都使用ForkJoinPool.commonPool()执行(除非它不支持至少两个并行级别,在这种情况下,创建一个新的线程来运行每个任务)。 这可以通过定义方法defaultExecutor()在子类中的非静态方法中被覆盖。 为了简化监视,调试和跟踪,所有生成的异步任务都是标记接口CompletableFuture.AsynchronousCompletionTask实例。 具有时间延迟的操作可以使用此类中定义的适配器方法,例如: supplyAsync(supplier, delayedExecutor(timeout, timeUnit)) 为了支持延迟和超时的方法,该类最多只能维护一个守护进程线程,用于触发和取消操作,而不是运行它们。
    • 所有CompletionStage方法都是独立于其他公共方法实现的,因此一个方法的行为不会受到子类中其他方法的覆盖的影响。
    • 所有CompletionStage方法返回CompletableFutures。 要将用法限制为仅在接口CompletionStage中定义的方法,请使用方法minimalCompletionStage() 或者确保只有客户端自己不修改未来,请使用方法copy()

    CompletableFuture还实施了Future以下政策:

    • 由于(不像FutureTask ),这个类不能直接控制导致它完成的计算,所以取消被视为另一种形式的异常完成。 方法cancel具有相同的效果completeExceptionally(new CancellationException()) 方法isCompletedExceptionally()可用于确定CompletableFuture是否以任何特殊方式完成。
    • 如果使用CompletionException异常完成,方法get()get(long, TimeUnit)将抛出与在相应的CompletionException中保持的相同原因的ExecutionException 为了简化大多数情况下的使用,该类还定义了方法join()getNow(T) ,而是在这些情况下直接抛出CompletionException。

    用于传递完成结果的参数(即T型参数)可能为null,但为任何其他参数传递空值将导致抛出NullPointerException

    该类的子类通常会覆盖“虚拟构造函数”方法newIncompleteFuture() ,该方法确定了CompletionStage方法返回的具体类型。 例如,这里是一个替代不同的默认Executor并禁用obtrude方法的类:

       class MyCompletableFuture<T> extends CompletableFuture<T> { static final Executor myExecutor = ...; public MyCompletableFuture() { } public <U> CompletableFuture<U> newIncompleteFuture() { return new MyCompletableFuture<U>(); } public Executor defaultExecutor() { return myExecutor; } public void obtrudeValue(T value) { throw new UnsupportedOperationException(); } public void obtrudeException(Throwable ex) { throw new UnsupportedOperationException(); } } 
    从以下版本开始:
    1.8
    • 构造方法详细信息

      • CompletableFuture

        public CompletableFuture​()
        创建一个新的不完整的CompletableFuture。
    • 方法详细信息

      • supplyAsync

        public static <U> CompletableFuture<U> supplyAsync​(Supplier<U> supplier)
        返回由在 ForkJoinPool.commonPool()运行的任务异步完成的新的CompletableFuture,通过调用给定的供应商获得的值。
        参数类型
        U - 函数的返回类型
        参数
        supplier - 返回用于完成返回的CompletableFuture的值的函数
        结果
        新的CompletableFuture
      • supplyAsync

        public static <U> CompletableFuture<U> supplyAsync​(Supplier<U> supplier,
                                                           Executor executor)
        返回一个新的CompletableFuture,由给定执行器中运行的任务异步完成,并通过调用给定的供应商获得的值。
        参数类型
        U - 函数的返回类型
        参数
        supplier - 返回用于完成返回的CompletableFuture的值的函数
        executor - 执行器用于异步执行
        结果
        新的CompletableFuture
      • runAsync

        public static CompletableFuture<Void> runAsync​(Runnable runnable)
        返回一个新的CompletableFuture,它在运行给定操作后由在 ForkJoinPool.commonPool()运行的任务异步完成。
        参数
        runnable - 完成返回的CompletableFuture之前运行的操作
        结果
        新的CompletableFuture
      • runAsync

        public static CompletableFuture<Void> runAsync​(Runnable runnable,
                                                       Executor executor)
        返回一个新的CompletableFuture,它在运行给定操作之后由在给定执行程序中运行的任务异步完成。
        参数
        runnable - 完成返回的CompletableFuture之前运行的操作
        executor - 执行器用于异步执行
        结果
        新的CompletableFuture
      • completedFuture

        public static <U> CompletableFuture<U> completedFuture​(U value)
        返回已经使用给定值完成的新的CompletableFuture。
        参数类型
        U - 值的类型
        参数
        value - 值
        结果
        完成的CompletableFuture
      • isDone

        public boolean isDone​()
        退货 true如果以任何方式完成:通常,特别地,或通过取消。
        Specified by:
        isDone在接口 Future<T>
        结果
        true如果完成
      • join

        public T join​()
        完成后返回结果值,如果完成异常,则返回(未检查)异常。 为了更好地符合常用功能表单的使用,如果完成此CompletableFuture涉及的计算抛出异常,则该方法将引发(未选中) CompletionException作为其原因的基础异常。
        结果
        结果值
        异常
        CancellationException - 如果计算被取消
        CompletionException - 如果这个未来完成异常或完成计算抛出异常
      • getNow

        public T getNow​(T valueIfAbsent)
        如果已完成,则返回结果值(或抛出任何遇到的异常),否则返回给定的值IfAbsent。
        参数
        valueIfAbsent - 如果没有完成,返回的值
        结果
        结果值,如果完成,否则给定值IfAbsent
        异常
        CancellationException - 如果计算被取消
        CompletionException - 如果这个未来完成异常或完成计算会造成例外
      • complete

        public boolean complete​(T value)
        如果尚未完成,请将返回的值设置为 get()并将相关方法设置为给定值。
        参数
        value - 结果值
        结果
        true如果此调用导致此CompletableFuture过渡到完成状态,否则为 false
      • completeExceptionally

        public boolean completeExceptionally​(Throwable ex)
        如果尚未完成,将导致调用 get()和相关方法来抛出给定的异常。
        参数
        ex - 例外
        结果
        true如果此调用导致此CompletableFuture过渡到完成状态,否则为 false
      • thenApply

        public <U> CompletableFuture<U> thenApply​(Function<? super T,? extends U> fn)
        说明从界面CompletionStage复制
        返回一个新的CompletionStage,当此阶段正常完成时,将以该阶段的结果作为所提供函数的参数执行。

        该方法类似于Optional.mapStream.map

        有关特殊完成的规则,请参阅CompletionStage文档。

        Specified by:
        thenApply在接口 CompletionStage<T>
        参数类型
        U - 函数的返回类型
        参数
        fn - 用于计算返回的CompletionStage的值的函数
        结果
        新的CompletionStage
      • thenApplyAsync

        public <U> CompletableFuture<U> thenApplyAsync​(Function<? super T,? extends U> fn)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当该阶段正常完成时,将使用此阶段的默认异步执行工具执行此阶段的结果作为所提供函数的参数。 请参阅CompletionStage文档,了解覆盖异常完成的规则。
        Specified by:
        thenApplyAsync在接口 CompletionStage<T>
        参数类型
        U - 函数的返回类型
        参数
        fn - 用于计算返回的CompletionStage的值的函数
        结果
        新的CompletionStage
      • thenApplyAsync

        public <U> CompletableFuture<U> thenApplyAsync​(Function<? super T,? extends U> fn,
                                                       Executor executor)
        说明从界面CompletionStage复制
        返回一个新的CompletionStage,当此阶段正常完成时,将使用提供的执行程序执行此阶段的结果作为提供函数的参数。 请参阅CompletionStage文档,了解完整的规则。
        Specified by:
        thenApplyAsync在接口 CompletionStage<T>
        参数类型
        U - 函数的返回类型
        参数
        fn - 用于计算返回的CompletionStage的值的函数
        executor - 执行器用于异步执行
        结果
        新的CompletionStage
      • thenAccept

        public CompletableFuture<Void> thenAccept​(Consumer<? super T> action)
        说明从界面CompletionStage复制
        返回一个新的CompletionStage,当此阶段正常完成时,以该阶段的结果作为提供的操作的参数执行。 请参阅CompletionStage有关特殊完成规则的文档。
        Specified by:
        thenAccept在接口 CompletionStage<T>
        参数
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • thenAcceptAsync

        public CompletableFuture<Void> thenAcceptAsync​(Consumer<? super T> action)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当此阶段正常完成时,将使用此阶段的默认异步执行工具执行,此阶段的结果作为提供的操作的参数。 请参阅CompletionStage文档,了解有关特殊完成的规则。
        Specified by:
        thenAcceptAsync在接口 CompletionStage<T>
        参数
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • thenAcceptAsync

        public CompletableFuture<Void> thenAcceptAsync​(Consumer<? super T> action,
                                                       Executor executor)
        说明从接口CompletionStage复制
        返回一个新的CompletionStage,当此阶段正常完成时,将使用提供的执行程序执行此阶段的结果作为提供的操作的参数。 请参阅CompletionStage文档,了解覆盖异常完成的规则。
        Specified by:
        thenAcceptAsync在接口 CompletionStage<T>
        参数
        action - 在完成返回的CompletionStage之前执行的操作
        executor - 执行器用于异步执行
        结果
        新的CompletionStage
      • thenRun

        public CompletableFuture<Void> thenRun​(Runnable action)
        说明从接口CompletionStage复制
        返回一个新的CompletionStage,当此阶段正常完成时,执行给定的操作。 请参阅CompletionStage文档,了解有关特殊完成的规则。
        Specified by:
        thenRun在接口 CompletionStage<T>
        参数
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • thenRunAsync

        public CompletableFuture<Void> thenRunAsync​(Runnable action)
        说明从接口CompletionStage复制
        返回一个新的CompletionStage,当此阶段正常完成时,使用此阶段的默认异步执行工具执行给定的操作。 请参阅CompletionStage文档,了解例外完成的规则。
        Specified by:
        thenRunAsync在接口 CompletionStage<T>
        参数
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • thenRunAsync

        public CompletableFuture<Void> thenRunAsync​(Runnable action,
                                                    Executor executor)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当此阶段正常完成时,使用提供的执行程序执行给定的操作。 请参阅CompletionStage文档,了解完整的规则。
        Specified by:
        thenRunAsync接口 CompletionStage<T>
        参数
        action - 在完成返回的CompletionStage之前执行的操作
        executor - 用于异步执行的执行器
        结果
        新的CompletionStage
      • thenCombine

        public <U,V> CompletableFuture<V> thenCombine​(CompletionStage<? extends U> other,
                                                      BiFunction<? super T,? super U,? extends V> fn)
        说明从接口CompletionStage复制
        返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,两个结果作为提供函数的参数执行。 请参阅CompletionStage有关特殊完成规则的文档。
        Specified by:
        thenCombine接口 CompletionStage<T>
        参数类型
        U - 其他CompletionStage的结果的类型
        V - 函数的返回类型
        参数
        other - 其他CompletionStage
        fn - 用于计算返回的CompletionStage的值的函数
        结果
        新的CompletionStage
      • thenCombineAsync

        public <U,V> CompletableFuture<V> thenCombineAsync​(CompletionStage<? extends U> other,
                                                           BiFunction<? super T,? super U,? extends V> fn)
        说明从接口CompletionStage复制
        返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,将使用此阶段的默认异步执行工具执行,其中两个结果作为提供函数的参数。 请参阅CompletionStage文件,了解有关特殊完成的规则。
        Specified by:
        thenCombineAsync在接口 CompletionStage<T>
        参数类型
        U - 其他CompletionStage的结果的类型
        V - 函数的返回类型
        参数
        other - 其他CompletionStage
        fn - 用于计算返回的CompletionStage的值的函数
        结果
        新的CompletionStage
      • thenCombineAsync

        public <U,V> CompletableFuture<V> thenCombineAsync​(CompletionStage<? extends U> other,
                                                           BiFunction<? super T,? super U,? extends V> fn,
                                                           Executor executor)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用提供的执行器执行,其中两个结果作为提供的函数的参数。 请参阅CompletionStage文档,了解覆盖异常完成的规则。
        Specified by:
        thenCombineAsync接口 CompletionStage<T>
        参数类型
        U - 其他CompletionStage的结果的类型
        V - 函数的返回类型
        参数
        other - 其他CompletionStage
        fn - 用于计算返回的CompletionStage的值的函数
        executor - 执行器用于异步执行
        结果
        新的CompletionStage
      • thenAcceptBoth

        public <U> CompletableFuture<Void> thenAcceptBoth​(CompletionStage<? extends U> other,
                                                          BiConsumer<? super T,? super U> action)
        说明从界面CompletionStage复制
        返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,两个结果作为提供的操作的参数被执行。 请参阅CompletionStage文档,了解覆盖完成的规则。
        Specified by:
        thenAcceptBoth在接口 CompletionStage<T>
        参数类型
        U - 其他CompletionStage的结果的类型
        参数
        other - 其他CompletionStage
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • thenAcceptBothAsync

        public <U> CompletableFuture<Void> thenAcceptBothAsync​(CompletionStage<? extends U> other,
                                                               BiConsumer<? super T,? super U> action)
        说明从接口CompletionStage复制
        返回一个新的CompletionStage,当这个和另一个给定阶段都正常完成时,将使用此阶段的默认异步执行工具执行,其中两个结果作为提供的操作的参数。 请参阅CompletionStage文档,了解覆盖异常完成的规则。
        Specified by:
        thenAcceptBothAsync在接口 CompletionStage<T>
        参数类型
        U - 其他CompletionStage的结果的类型
        参数
        other - 其他CompletionStage
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • thenAcceptBothAsync

        public <U> CompletableFuture<Void> thenAcceptBothAsync​(CompletionStage<? extends U> other,
                                                               BiConsumer<? super T,? super U> action,
                                                               Executor executor)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,将使用提供的执行器执行,其中两个结果作为提供的操作的参数。 请参阅CompletionStage有关特殊完成规则的文档。
        Specified by:
        thenAcceptBothAsync在接口 CompletionStage<T>
        参数类型
        U - 其他CompletionStage的结果类型
        参数
        other - 其他CompletionStage
        action - 在完成返回的CompletionStage之前执行的操作
        executor - 执行程序用于异步执行
        结果
        新的CompletionStage
      • runAfterBoth

        public CompletableFuture<Void> runAfterBoth​(CompletionStage<?> other,
                                                    Runnable action)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,执行给定的动作。 有关特殊完成的规则,请参阅CompletionStage文档。
        Specified by:
        runAfterBoth在接口 CompletionStage<T>
        参数
        other - 其他CompletionStage
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • runAfterBothAsync

        public CompletableFuture<Void> runAfterBothAsync​(CompletionStage<?> other,
                                                         Runnable action)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当这个和另一个给定阶段都正常完成时,使用此阶段的默认异步执行工具执行给定的操作。 请参阅CompletionStage文档,了解完整的规则。
        Specified by:
        runAfterBothAsync在接口 CompletionStage<T>
        参数
        other - 其他CompletionStage
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • runAfterBothAsync

        public CompletableFuture<Void> runAfterBothAsync​(CompletionStage<?> other,
                                                         Runnable action,
                                                         Executor executor)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用提供的执行器执行给定的动作。 请参阅CompletionStage有关特殊完成规则的文档。
        Specified by:
        runAfterBothAsync接口 CompletionStage<T>
        参数
        other - 其他CompletionStage
        action - 在完成返回的CompletionStage之前执行的操作
        executor - 执行器用于异步执行
        结果
        新的CompletionStage
      • applyToEither

        public <U> CompletableFuture<U> applyToEither​(CompletionStage<? extends T> other,
                                                      Function<? super T,U> fn)
        说明从界面CompletionStage复制
        返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,执行相应的结果作为提供的函数的参数。 有关特殊完成的规则,请参阅CompletionStage文档。
        Specified by:
        applyToEither在接口 CompletionStage<T>
        参数类型
        U - 函数的返回类型
        参数
        other - 其他CompletionStage
        fn - 用于计算返回的CompletionStage的值的函数
        结果
        新的CompletionStage
      • applyToEitherAsync

        public <U> CompletableFuture<U> applyToEitherAsync​(CompletionStage<? extends T> other,
                                                           Function<? super T,U> fn)
        说明从接口CompletionStage复制
        返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,将使用此阶段的默认异步执行工具执行,其中相应的结果作为提供函数的参数。 请参阅CompletionStage文档,了解完整的规则。
        Specified by:
        applyToEitherAsync在接口 CompletionStage<T>
        参数类型
        U - 函数的返回类型
        参数
        other - 其他CompletionStage
        fn - 用于计算返回的CompletionStage的值的函数
        结果
        新的CompletionStage
      • applyToEitherAsync

        public <U> CompletableFuture<U> applyToEitherAsync​(CompletionStage<? extends T> other,
                                                           Function<? super T,U> fn,
                                                           Executor executor)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,将使用提供的执行器执行,其中相应的结果作为参数提供给函数。 请参阅CompletionStage文档,了解完整的规则。
        Specified by:
        applyToEitherAsync在接口 CompletionStage<T>
        参数类型
        U - 函数的返回类型
        参数
        other - 其他CompletionStage
        fn - 用于计算返回的CompletionStage的值的函数
        executor - 执行器用于异步执行
        结果
        新的CompletionStage
      • acceptEither

        public CompletableFuture<Void> acceptEither​(CompletionStage<? extends T> other,
                                                    Consumer<? super T> action)
        说明从接口CompletionStage复制
        返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,执行相应的结果作为提供的操作的参数。 有关特殊完成的规则,请参阅CompletionStage文档。
        Specified by:
        acceptEither在接口 CompletionStage<T>
        参数
        other - 其他CompletionStage
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • acceptEitherAsync

        public CompletableFuture<Void> acceptEitherAsync​(CompletionStage<? extends T> other,
                                                         Consumer<? super T> action)
        说明从界面CompletionStage复制
        返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,将使用此阶段的默认异步执行工具执行,其中相应的结果作为提供的操作的参数。 请参阅CompletionStage文档,了解完整的规则。
        Specified by:
        acceptEitherAsync在接口 CompletionStage<T>
        参数
        other - 其他CompletionStage
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • acceptEitherAsync

        public CompletableFuture<Void> acceptEitherAsync​(CompletionStage<? extends T> other,
                                                         Consumer<? super T> action,
                                                         Executor executor)
        说明从接口CompletionStage复制
        返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,使用提供的执行器执行,其中相应的结果作为参数提供的操作。 请参阅CompletionStage文档,了解涵盖特殊完成的规则。
        Specified by:
        acceptEitherAsync在接口 CompletionStage<T>
        参数
        other - 其他CompletionStage
        action - 完成返回的CompletionStage之前执行的操作
        executor - 执行器用于异步执行
        结果
        新的CompletionStage
      • runAfterEitherAsync

        public CompletableFuture<Void> runAfterEitherAsync​(CompletionStage<?> other,
                                                           Runnable action)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,使用此阶段的默认异步执行工具执行给定的操作。 请参阅CompletionStage文档,了解完整的规则。
        Specified by:
        runAfterEitherAsync在接口 CompletionStage<T>
        参数
        other - 其他CompletionStage
        action - 在完成返回的CompletionStage之前执行的操作
        结果
        新的CompletionStage
      • runAfterEitherAsync

        public CompletableFuture<Void> runAfterEitherAsync​(CompletionStage<?> other,
                                                           Runnable action,
                                                           Executor executor)
        说明从界面CompletionStage复制
        返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,使用提供的执行器执行给定的操作。 请参阅CompletionStage文档,了解覆盖异常完成的规则。
        Specified by:
        runAfterEitherAsync在接口 CompletionStage<T>
        参数
        other - 其他CompletionStage
        action - 在完成返回的CompletionStage之前执行的操作
        executor - 执行器用于异步执行
        结果
        新的CompletionStage
      • thenCompose

        public <U> CompletableFuture<U> thenCompose​(Function<? super T,? extends CompletionStage<U>> fn)
        描述从接口CompletionStage复制
        返回一个完成的新的CompletionStage,其值与给定函数返回的CompletionStage相同。

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

        为了确保进度,提供的功能必须最终完成其结果。

        该方法类似于Optional.flatMapStream.flatMap

        请参阅CompletionStage文档,了解覆盖异常完成的规则。

        Specified by:
        thenCompose在接口 CompletionStage<T>
        参数类型
        U - 返回的CompletionStage结果的类型
        参数
        fn - 用于计算另一个CompletionStage的函数
        结果
        新的CompletionStage
      • thenComposeAsync

        public <U> CompletableFuture<U> thenComposeAsync​(Function<? super T,? extends CompletionStage<U>> fn)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,其完成值与给定函数返回的CompletionStage值相同,并使用该阶段的默认异步执行工具执行。

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

        为了确保进度,提供的功能必须最终完成其结果。

        请参阅CompletionStage文档,了解有关特殊完成的规则。

        Specified by:
        thenComposeAsync在接口 CompletionStage<T>
        参数类型
        U - 返回的CompletionStage结果的类型
        参数
        fn - 用于计算另一个CompletionStage的函数
        结果
        新的CompletionStage
      • thenComposeAsync

        public <U> CompletableFuture<U> thenComposeAsync​(Function<? super T,? extends CompletionStage<U>> fn,
                                                         Executor executor)
        说明从界面CompletionStage复制
        返回一个新的CompletionStage,其完成值与给定函数返回的CompletionStage值相同,并使用提供的Executor执行。

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

        为了确保进度,提供的功能必须最终完成其结果。

        有关特殊完成的规则,请参阅CompletionStage文档。

        Specified by:
        thenComposeAsync在接口 CompletionStage<T>
        参数类型
        U - 返回的CompletionStage结果的类型
        参数
        fn - 用于计算另一个CompletionStage的函数
        executor - 用于异步执行的执行器
        结果
        新的CompletionStage
      • whenComplete

        public CompletableFuture<T> whenComplete​(BiConsumer<? super T,? super Throwable> action)
        说明从接口CompletionStage复制
        返回与此阶段相同的结果或异常的新CompletionStage,当此阶段完成时,它将执行给定的操作。

        当这个阶段完成时,使用结果(或null如果没有)和异常(或null如果没有))作为参数调用给定的动作。 返回的阶段在行动返回时完成。

        与方法handle不同,此方法不是设计为翻译完成结果,因此提供的操作不应抛出异常。 但是,如果这样做,则适用以下规则:如果此阶段正常完成,但提供的操作引发异常,则返回的阶段会以提供的操作异常完成。 或者,如果此阶段完成异常且提供的操作引发异常,那么返回的阶段会在此阶段异常结束。

        Specified by:
        whenComplete在接口 CompletionStage<T>
        参数
        action - 要执行的动作
        结果
        新的CompletionStage
      • whenCompleteAsync

        public CompletableFuture<T> whenCompleteAsync​(BiConsumer<? super T,? super Throwable> action)
        描述从接口CompletionStage复制
        返回与此阶段相同结果或异常的新CompletionStage,当此阶段完成时,将使用此阶段的默认异步执行工具执行给定操作。

        当这个阶段完成时,使用结果(或null如果没有)和异常(或null如果没有))调用给定的动作作为参数。 返回的阶段在行动返回时完成。

        与方法handleAsync不同,此方法不是设计为翻译完成结果,因此提供的操作不应抛出异常。 但是,如果这样做,则适用以下规则:如果此阶段正常完成但提供的操作引发异常,那么返回的阶段会以提供的操作异常完成。 或者,如果此阶段完成异常且提供的操作引发异常,那么返回的阶段会在此阶段异常结束。

        Specified by:
        whenCompleteAsync在接口 CompletionStage<T>
        参数
        action - 要执行的动作
        结果
        新的CompletionStage
      • whenCompleteAsync

        public CompletableFuture<T> whenCompleteAsync​(BiConsumer<? super T,? super Throwable> action,
                                                      Executor executor)
        说明从界面CompletionStage复制
        返回与此阶段相同结果或异常的新CompletionStage,当此阶段完成时,使用提供的执行程序执行给定操作。

        当这个阶段完成时,使用结果(或null如果没有))和此阶段的异常(或null如果没有)作为参数)调用给定的操作。 返回的阶段在行动返回时完成。

        与方法handleAsync不同,此方法不是设计为翻译完成结果,因此提供的操作不应抛出异常。 但是,如果这样做,则适用以下规则:如果此阶段正常完成但提供的操作引发异常,那么返回的阶段会以提供的操作异常完成。 或者,如果此阶段完成异常且提供的操作引发异常,那么返回的阶段会在此阶段异常结束。

        Specified by:
        whenCompleteAsync在接口 CompletionStage<T>
        参数
        action - 要执行的动作
        executor - 执行器用于异步执行
        结果
        新的CompletionStage
      • handle

        public <U> CompletableFuture<U> handle​(BiFunction<? super T,Throwable,? extends U> fn)
        说明从接口CompletionStage复制
        返回一个新的CompletionStage,当此阶段正常或异常完成时,将使用此阶段的结果和异常作为所提供函数的参数执行。

        当这个阶段完成时,使用结果(或null如果没有)和这个阶段的异常(或null如果没有)作为参数)调用给定的函数,并且使用函数的结果来完成返回的阶段。

        Specified by:
        handle在接口 CompletionStage<T>
        参数类型
        U - 函数的返回类型
        参数
        fn - 用于计算返回的CompletionStage的值的函数
        结果
        新的CompletionStage
      • handleAsync

        public <U> CompletableFuture<U> handleAsync​(BiFunction<? super T,Throwable,? extends U> fn)
        新新新新新CompletionStage
        返回一个新的CompletionStage,当该阶段完成正常或异常时,将使用此阶段的默认异步执行工具执行,此阶段的结果和异常作为提供函数的参数。

        当这个阶段完成时,使用结果(或者null如果没有)和异常(或null如果没有)作为参数调用给定的函数,并且使用函数的结果来完成返回的阶段。

        Specified by:
        handleAsync在接口 CompletionStage<T>
        参数类型
        U - 函数的返回类型
        参数
        fn - 用于计算返回的CompletionStage的值的函数
        结果
        新的CompletionStage
      • handleAsync

        public <U> CompletableFuture<U> handleAsync​(BiFunction<? super T,Throwable,? extends U> fn,
                                                    Executor executor)
        描述从接口CompletionStage复制
        返回一个新的CompletionStage,当此阶段正常或异常完成时,将使用提供的执行程序执行此阶段的结果和异常作为提供的函数的参数。

        当这个阶段完成时,使用结果(或null如果没有))和此阶段的异常(或null如果没有)作为参数)调用给定函数,并使用函数的结果来完成返回的阶段。

        Specified by:
        handleAsync在接口 CompletionStage<T>
        参数类型
        U - 函数的返回类型
        参数
        fn - 用于计算返回的CompletionStage的值的函数
        executor - 执行器用于异步执行
        结果
        新的CompletionStage
      • exceptionally

        public CompletableFuture<T> exceptionally​(Function<Throwable,? extends T> fn)
        返回一个新的CompletableFuture,当CompletableFuture完成时完成,结果是异常触发此CompletableFuture的完成特殊功能的给定功能; 否则,如果此CompletableFuture正常完成,则返回的CompletableFuture也会以相同的值正常完成。 注意:使用方法whenCompletehandle可以使用此功能更灵活的版本。
        Specified by:
        exceptionally在接口 CompletionStage<T>
        参数
        fn - 用于计算返回的CompletableFuture的值的函数,如果此CompletableFuture异常完成
        结果
        新的CompletableFuture
      • allOf

        public static CompletableFuture<Void> allOf​(CompletableFuture<?>... cfs)
        返回一个新的CompletableFuture,当所有给定的CompletableFutures完成时,完成。 如果给定的CompletableFutures中的任何一个完全完成,那么返回的CompletableFuture也会这样做,并且将一个将此异常作为原因的CompletionException异常。 否则,给定的CompletableFutures的结果(如果有的话)没有反映在返回的CompletableFuture中,但可以通过单独检查获得。 如果没有提供CompletableFutures,则返回一个CompletableFuture完成,值为null

        这种方法的应用之一是等待完成一套独立的CompletableFutures,然后再继续执行程序,如下所示: CompletableFuture.allOf(c1, c2, c3).join();

        参数
        cfs - CompletableFutures
        结果
        一个新的CompletableFuture完成时,所有给定的CompletableFutures完成
        异常
        NullPointerException - 如果数组或其任何元素是 null
      • anyOf

        public static CompletableFuture<Object> anyOf​(CompletableFuture<?>... cfs)
        返回一个新的CompletableFuture,当任何一个给定的CompletableFutures完成时,完成相同的结果。 否则,如果它完成异常,则返回的CompletableFuture也会这样执行,并以一个将此异常作为原因的CompletionException异常。 如果没有提供CompletableFutures,则返回一个不完整的CompletableFuture。
        参数
        cfs - CompletableFutures
        结果
        一个新的CompletableFuture完成,结果或任何给定的CompletableFutures的任何一个完成
        异常
        NullPointerException - 如果数组或其任何元素是 null
      • cancel

        public boolean cancel​(boolean mayInterruptIfRunning)
        如果尚未完成,请用CancellationException完成此CompletableFuture。 尚未完成的依赖的可完成的功能也将完成异常,由CancellationException引起的CancellationException
        Specified by:
        cancel在接口 Future<T>
        参数
        mayInterruptIfRunning - 此值对此实现没有影响,因为中断不用于控制处理。
        结果
        true如果此任务现在已取消
      • isCancelled

        public boolean isCancelled​()
        如果此CompletableFuture在正常完成之前被取消,则返回 true
        Specified by:
        isCancelled在接口 Future<T>
        结果
        true如果此CompletableFuture在正常完成之前被取消
      • isCompletedExceptionally

        public boolean isCompletedExceptionally​()
        如果此CompletableFuture以任何方式非常完成,则返回true 可能的原因包括取消,显式调用completeExceptionally ,并突然终止CompletionStage操作。
        结果
        true如果此CompletableFuture格外完成
      • obtrudeValue

        public void obtrudeValue​(T value)
        强制设置或重置方法get()及其相关方法随后返回的值,无论是否已完成。 该方法仅用于错误恢复操作,即使在这种情况下也可能导致使用已建立与覆盖结果的持续依赖性完成。
        参数
        value - 完成值
      • obtrudeException

        public void obtrudeException​(Throwable ex)
        强制导致后续调用方法get()和相关方法抛出给定的异常,无论是否已经完成。 该方法仅用于错误恢复操作,即使在这种情况下也可能导致使用已建立与覆盖结果的持续依赖性完成。
        参数
        ex - 例外
        异常
        NullPointerException - 如果异常为null
      • getNumberOfDependents

        public int getNumberOfDependents​()
        返回完成等待完成此CompletableFuture的CompletableFutures的估计数。 该方法设计用于监控系统状态,不用于同步控制。
        结果
        依赖的CompletableFutures的数量
      • toString

        public String toString​()
        返回一个标识此CompletableFuture的字符串及其完成状态。 的状态下,在括号中,包含字符串"Completed Normally"或字符串"Completed Exceptionally" ,或字符串"Not completed"随后依赖其完成后CompletableFutures的数量,如果有的话。
        重写:
        toStringObject
        结果
        一个标识此CompletableFuture的字符串,以及它的状态
      • newIncompleteFuture

        public <U> CompletableFuture<U> newIncompleteFuture​()
        返回由CompletionStage方法返回的类型的新的不完整的CompletableFuture。 子类通常会覆盖此方法以返回与此CompletableFuture相同类的实例。 默认实现返回一个类CompletableFuture的实例。
        参数类型
        U - 值的类型
        结果
        一个新的CompletableFuture
        从以下版本开始:
        9
      • defaultExecutor

        public Executor defaultExecutor​()
        返回用于不指定Executor的异步方法的默认Executor。 这个类使用ForkJoinPool.commonPool()如果它支持多个并行线程,或者一个Executor每个异步任务使用一个线程。 这个方法可以在子类中被覆盖,以返回提供至少一个独立线程的Executor。
        结果
        执行人
        从以下版本开始:
        9
      • copy

        public CompletableFuture<T> copy​()
        返回一个新的CompletableFuture,它在正常完成时正常完成,具有与此CompletableFuture相同的值。 如果此CompletableFuture异常完成,则返回的CompletableFuture将以完整异常完成异常,并将此异常作为原因。 行为相当于thenApply(x -> x) 这种方法可能作为“防御性复制”的形式是有用的,以防止客户端完成,同时仍然能够安排依赖的操作。
        结果
        新的CompletableFuture
        从以下版本开始:
        9
      • minimalCompletionStage

        public CompletionStage<T> minimalCompletionStage​()
        返回一个新的CompletionStage,它在正常完成时正常完成与此CompletableFuture相同的值,并且不能以未由接口CompletionStage定义的方式独立完成或以其他方式使用。 如果此CompletableFuture完全异常完成,则返回的CompletionStage将以完整异常完成异常,因此导致此异常。

        除非被子类覆盖,否则可以从最小的CompletionStage通过toCompletableFuture()获取可用的所有方法的新的非最小的CompletableFuture。 例如,可以等待最小阶段的完成

          minimalStage.toCompletableFuture().join();  
        结果
        新的CompletionStage
        从以下版本开始:
        9
      • completeAsync

        public CompletableFuture<T> completeAsync​(Supplier<? extends T> supplier,
                                                  Executor executor)
        使用给定的执行器从异步任务调用给定的供应商函数的结果来完成此CompletableFuture。
        参数
        supplier - 返回用于完成此CompletableFuture的值的函数
        executor - 执行器用于异步执行
        结果
        这个CompletableFuture
        从以下版本开始:
        9
      • completeAsync

        public CompletableFuture<T> completeAsync​(Supplier<? extends T> supplier)
        使用默认执行程序从异步任务调用给定的供应商函数的结果,完成此CompletableFuture。
        参数
        supplier - 返回用于完成此CompletableFuture的值的函数
        结果
        这个CompletableFuture
        从以下版本开始:
        9
      • orTimeout

        public CompletableFuture<T> orTimeout​(long timeout,
                                              TimeUnit unit)
        如果在给定的超时之前未完成,可以使用TimeoutException完成此CompletableFuture。
        参数
        timeout - 在使用超时出现异常之前等待多长时间,以 unit为单位
        unit - a TimeUnit确定如何解释 timeout参数
        结果
        这个CompletableFuture
        从以下版本开始:
        9
      • completeOnTimeout

        public CompletableFuture<T> completeOnTimeout​(T value,
                                                      long timeout,
                                                      TimeUnit unit)
        如果在给定的超时之前未完成,则使用给定值完成此CompletableFuture。
        参数
        value - 超时时使用的值
        timeout - 在给定值正常完成之前等待多长时间,以 unit为单位
        unit - a TimeUnit确定如何解释 timeout参数
        结果
        这个CompletableFuture
        从以下版本开始:
        9
      • delayedExecutor

        public static Executor delayedExecutor​(long delay,
                                               TimeUnit unit,
                                               Executor executor)
        返回一个新的Executor,它在给定的延迟之后向给定的基本执行器提交一个任务(或者如果非正的则不会延迟)。 每个延迟都是在调用返回的执行者的execute方法时开始的。
        参数
        delay - 延迟多久,以 unit为单位
        unit - a TimeUnit确定如何解释 delay参数
        executor - 基地执行人
        结果
        新推迟执行人
        从以下版本开始:
        9
      • delayedExecutor

        public static Executor delayedExecutor​(long delay,
                                               TimeUnit unit)
        返回一个新的执行程序,它在给定的延迟之后将任务提交给默认的执行程序(或者如果不为正,则不会延迟)。 每个延迟在调用返回的执行者的execute方法时开始。
        参数
        delay - 以 unit为单位延迟 unit
        unit - a TimeUnit确定如何解释 delay参数
        结果
        新推迟执行人
        从以下版本开始:
        9
      • completedStage

        public static <U> CompletionStage<U> completedStage​(U value)
        返回已经使用给定值完成的新CompletionStage,并仅支持接口CompletionStage中的那些方法。
        参数类型
        U - 值的类型
        参数
        value - 值
        结果
        完成完成
        从以下版本开始:
        9
      • failedFuture

        public static <U> CompletableFuture<U> failedFuture​(Throwable ex)
        返回一个已经完成的新的CompletableFuture,特别是给定的异常。
        参数类型
        U - 值的类型
        参数
        ex - 例外
        结果
        完成的CompletableFuture
        从以下版本开始:
        9
      • failedStage

        public static <U> CompletionStage<U> failedStage​(Throwable ex)
        返回一个已完成的新的CompletionStage,特别是给定异常,并且仅支持接口CompletionStage中的那些方法。
        参数类型
        U - 值的类型
        参数
        ex - 例外
        结果
        完成完成
        从以下版本开始:
        9