- java.lang.Object
-
- java.util.concurrent.CompletableFuture<T>
-
- 参数类型
-
T- 未来join和get方法返回的结果类型
- All Implemented Interfaces:
-
CompletionStage<T>,Future<T>
public class CompletableFuture<T> extends Object implements Future<T>, CompletionStage<T>
AFuture可以明确完成(设置其值和状态),并可用作CompletionStage,支持在其完成时触发的依赖功能和操作。当两个或多个线程试图
complete,completeExceptionally,或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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static interfaceCompletableFuture.AsynchronousCompletionTask标识接口,用于识别由async方法生成的异步任务。
-
构造方法摘要
构造方法 Constructor 描述 CompletableFuture()创建一个新的不完整的CompletableFuture。
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 CompletableFuture<Void>acceptEither(CompletionStage<? extends T> other, Consumer<? super T> action)返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,执行相应的结果作为提供的操作的参数。CompletableFuture<Void>acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action)返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,将使用此阶段的默认异步执行工具执行,其中相应的结果作为提供的操作的参数。CompletableFuture<Void>acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action, Executor executor)返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,使用提供的执行器执行,其中相应的结果作为参数提供的操作。static CompletableFuture<Void>allOf(CompletableFuture<?>... cfs)返回一个新的CompletableFuture,当所有给定的CompletableFutures完成时,完成。static CompletableFuture<Object>anyOf(CompletableFuture<?>... cfs)返回一个新的CompletableFuture,当任何一个给定的CompletableFutures完成时,完成相同的结果。<U> CompletableFuture<U>applyToEither(CompletionStage<? extends T> other, Function<? super T,U> fn)返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,执行相应的结果作为提供的函数的参数。<U> CompletableFuture<U>applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn)返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,将使用此阶段的默认异步执行工具执行,其中相应的结果作为提供函数的参数。<U> CompletableFuture<U>applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn, Executor executor)返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,将使用提供的执行器执行,其中相应的结果作为参数提供给函数。booleancancel(boolean mayInterruptIfRunning)如果尚未完成,请使用CancellationException完成此CompletableFuture。booleancomplete(T value)如果尚未完成,请将返回的值设置为get(),并将相关方法设置为给定值。CompletableFuture<T>completeAsync(Supplier<? extends T> supplier)使用默认执行程序从异步任务调用给定的供应商函数的结果,完成此CompletableFuture。CompletableFuture<T>completeAsync(Supplier<? extends T> supplier, Executor executor)使用给定的执行器从异步任务调用给定的供应商函数的结果来完成此CompletableFuture。static <U> CompletableFuture<U>completedFuture(U value)返回已经使用给定值完成的新的CompletableFuture。static <U> CompletionStage<U>completedStage(U value)返回已经使用给定值完成的新CompletionStage,并且仅支持接口CompletionStage中的那些方法。booleancompleteExceptionally(Throwable ex)如果还没有完成,会导致调用get()和相关方法来抛出给定的异常。CompletableFuture<T>completeOnTimeout(T value, long timeout, TimeUnit unit)如果在给定的超时之前未完成,则使用给定值完成此CompletableFuture。CompletableFuture<T>copy()返回一个新的CompletableFuture,它在正常完成时正常完成,具有与此CompletableFuture相同的值。ExecutordefaultExecutor()返回用于不指定Executor的异步方法的默认Executor。static ExecutordelayedExecutor(long delay, TimeUnit unit)返回一个新的执行程序,它在给定的延迟之后将任务提交给默认的执行程序(或者如果不为正,则不会延迟)。static ExecutordelayedExecutor(long delay, TimeUnit unit, Executor executor)返回一个新的Executor,它在给定的延迟之后向给定的基本执行器提交一个任务(或者如果非正的则不会延迟)。CompletableFuture<T>exceptionally(Function<Throwable,? extends T> fn)返回一个新的CompletableFuture,当CompletableFuture完成时完成,结果是异常触发此CompletableFuture的完成特殊功能的给定功能; 否则,如果此CompletableFuture正常完成,则返回的CompletableFuture也会以相同的值正常完成。static <U> CompletableFuture<U>failedFuture(Throwable ex)返回一个已经完成的新的CompletableFuture,特别是给定的异常。static <U> CompletionStage<U>failedStage(Throwable ex)返回一个已经完成的新的CompletionStage,特别是给定异常,并且仅支持接口CompletionStage中的那些方法。Tget()等待这个未来完成的必要,然后返回结果。Tget(long timeout, TimeUnit unit)如果有必要等待这个未来完成的给定时间,然后返回其结果(如果有的话)。TgetNow(T valueIfAbsent)如果已完成,则返回结果值(或抛出任何遇到的异常),否则返回给定的值IfAbsent。intgetNumberOfDependents()返回完成等待完成此CompletableFuture的CompletableFutures的估计数。<U> CompletableFuture<U>handle(BiFunction<? super T,Throwable,? extends U> fn)返回一个新的CompletionStage,当此阶段正常或异常完成时,将使用此阶段的结果和异常作为所提供函数的参数执行。<U> CompletableFuture<U>handleAsync(BiFunction<? super T,Throwable,? extends U> fn)返回一个新的CompletionStage,当该阶段完成正常或异常时,将使用此阶段的默认异步执行工具执行,此阶段的结果和异常作为提供函数的参数。<U> CompletableFuture<U>handleAsync(BiFunction<? super T,Throwable,? extends U> fn, Executor executor)返回一个新的CompletionStage,当此阶段正常或异常完成时,将使用提供的执行程序执行此阶段的结果和异常作为提供的函数的参数。booleanisCancelled()如果此CompletableFuture在正常完成之前被取消,则返回true。booleanisCompletedExceptionally()如果此CompletableFuture以任何方式完成异常,则返回true。booleanisDone()如果以任何方式完成,则返回true:通常,特别地,或通过取消。Tjoin()完成后返回结果值,如果完成异常,则返回(未检查)异常。CompletionStage<T>minimalCompletionStage()返回一个新的CompletionStage,它在正常完成时与该CompletableFuture的值正常完成,并且不能以未由接口CompletionStage的方法定义的方式独立完成或以其他方式使用。<U> CompletableFuture<U>newIncompleteFuture()返回由CompletionStage方法返回的类型的新的不完整的CompletableFuture。voidobtrudeException(Throwable ex)强制引起方法get()的后续调用和相关方法抛出给定的异常,无论是否已经完成。voidobtrudeValue(T value)强制设置或重置方法get()及相关方法随后返回的值,无论是否已完成。CompletableFuture<T>orTimeout(long timeout, TimeUnit unit)如果在给定的超时之前没有完成,可以使用TimeoutException完成此CompletableFuture。CompletableFuture<Void>runAfterBoth(CompletionStage<?> other, Runnable action)返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,执行给定的动作。CompletableFuture<Void>runAfterBothAsync(CompletionStage<?> other, Runnable action)返回一个新的CompletionStage,当这个和另一个给定阶段都正常完成时,使用此阶段的默认异步执行工具执行给定的操作。CompletableFuture<Void>runAfterBothAsync(CompletionStage<?> other, Runnable action, Executor executor)返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用提供的执行器执行给定的动作。CompletableFuture<Void>runAfterEither(CompletionStage<?> other, Runnable action)返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,执行给定的操作。CompletableFuture<Void>runAfterEitherAsync(CompletionStage<?> other, Runnable action)返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,使用此阶段的默认异步执行工具执行给定的操作。CompletableFuture<Void>runAfterEitherAsync(CompletionStage<?> other, Runnable action, Executor executor)返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,使用提供的执行器执行给定的操作。static CompletableFuture<Void>runAsync(Runnable runnable)返回一个新的CompletableFuture,它在运行给定操作后由在ForkJoinPool.commonPool()中运行的任务异步完成。static CompletableFuture<Void>runAsync(Runnable runnable, Executor executor)返回一个新的CompletableFuture,它在运行给定操作之后由在给定执行程序中运行的任务异步完成。static <U> CompletableFuture<U>supplyAsync(Supplier<U> supplier)返回一个新的CompletableFuture,它由在ForkJoinPool.commonPool()中运行的任务异步完成,并通过调用给定的供应商获得的值。static <U> CompletableFuture<U>supplyAsync(Supplier<U> supplier, Executor executor)返回一个新的CompletableFuture,由给定执行器中运行的任务异步完成,并通过调用给定的供应商获得的值。CompletableFuture<Void>thenAccept(Consumer<? super T> action)返回一个新的CompletionStage,当此阶段正常完成时,以该阶段的结果作为提供的操作的参数执行。CompletableFuture<Void>thenAcceptAsync(Consumer<? super T> action)返回一个新的CompletionStage,当此阶段正常完成时,将使用此阶段的默认异步执行工具执行,此阶段的结果作为提供的操作的参数。CompletableFuture<Void>thenAcceptAsync(Consumer<? super T> action, Executor executor)返回一个新的CompletionStage,当此阶段正常完成时,将使用提供的执行程序执行此阶段的结果作为提供的操作的参数。<U> CompletableFuture<Void>thenAcceptBoth(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,两个结果作为提供的操作的参数被执行。<U> CompletableFuture<Void>thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)返回一个新的CompletionStage,当这个和另一个给定阶段都正常完成时,将使用此阶段的默认异步执行工具执行,其中两个结果作为提供的操作的参数。<U> CompletableFuture<Void>thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action, Executor executor)返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,将使用提供的执行器执行,其中两个结果作为提供的操作的参数。<U> CompletableFuture<U>thenApply(Function<? super T,? extends U> fn)返回一个新的CompletionStage,当此阶段正常完成时,将以该阶段的结果作为所提供函数的参数执行。<U> CompletableFuture<U>thenApplyAsync(Function<? super T,? extends U> fn)返回一个新的CompletionStage,当该阶段正常完成时,将使用此阶段的默认异步执行工具执行此阶段的结果作为所提供函数的参数。<U> CompletableFuture<U>thenApplyAsync(Function<? super T,? extends U> fn, Executor executor)返回一个新的CompletionStage,当此阶段正常完成时,将使用提供的执行程序执行此阶段的结果作为提供函数的参数。<U,V> CompletableFuture<V>thenCombine(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,两个结果作为提供函数的参数执行。<U,V> CompletableFuture<V>thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,将使用此阶段的默认异步执行工具执行,其中两个结果作为提供函数的参数。<U,V> CompletableFuture<V>thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn, Executor executor)返回一个新的CompletionStage,当这个和另一个给定的阶段都正常完成时,使用提供的执行器执行,其中两个结果作为提供的函数的参数。<U> CompletableFuture<U>thenCompose(Function<? super T,? extends CompletionStage<U>> fn)返回一个完成的新的CompletionStage,其值与给定函数返回的CompletionStage相同。<U> CompletableFuture<U>thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn)返回一个新的CompletionStage,其完成值与给定函数返回的CompletionStage值相同,并使用该阶段的默认异步执行工具执行。<U> CompletableFuture<U>thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn, Executor executor)返回一个新的CompletionStage,其完成值与给定函数返回的CompletionStage值相同,并使用提供的Executor执行。CompletableFuture<Void>thenRun(Runnable action)返回一个新的CompletionStage,当此阶段正常完成时,执行给定的操作。CompletableFuture<Void>thenRunAsync(Runnable action)返回一个新的CompletionStage,当此阶段正常完成时,使用此阶段的默认异步执行工具执行给定的操作。CompletableFuture<Void>thenRunAsync(Runnable action, Executor executor)返回一个新的CompletionStage,当此阶段正常完成时,使用提供的执行程序执行给定的操作。CompletableFuture<T>toCompletableFuture()返回此CompletableFuture。StringtoString()返回一个标识此CompletableFuture的字符串及其完成状态。CompletableFuture<T>whenComplete(BiConsumer<? super T,? super Throwable> action)返回与此阶段相同的结果或异常的新CompletionStage,当此阶段完成时,它将执行给定的操作。CompletableFuture<T>whenCompleteAsync(BiConsumer<? super T,? super Throwable> action)返回与此阶段相同结果或异常的新CompletionStage,当此阶段完成时,将使用此阶段的默认异步执行工具执行给定操作。CompletableFuture<T>whenCompleteAsync(BiConsumer<? super T,? super Throwable> action, Executor executor)返回与此阶段相同结果或异常的新CompletionStage,当此阶段完成时,使用提供的执行程序执行给定操作。
-
-
-
方法详细信息
-
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如果以任何方式完成:通常,特别地,或通过取消。
-
get
public T get() throws InterruptedException, ExecutionException
等待这个未来完成的必要,然后返回结果。- Specified by:
-
get在接口Future<T> - 结果
- 结果值
- 异常
-
CancellationException- 如果这个未来被取消 -
ExecutionException- 如果这个未来完成例外 -
InterruptedException- 如果当前线程在等待时中断
-
get
public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
如果有必要等待这个未来完成的给定时间,然后返回其结果(如果有的话)。- Specified by:
-
get在接口Future<T> - 参数
-
timeout- 等待的最长时间 -
unit- 超时参数的时间单位 - 结果
- 结果值
- 异常
-
CancellationException- 如果这个未来被取消了 -
ExecutionException- 如果这个未来完成例外 -
InterruptedException- 如果当前线程在等待时中断 -
TimeoutException- 如果等待超时
-
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.map和Stream.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
-
runAfterEither
public CompletableFuture<Void> runAfterEither(CompletionStage<?> other, Runnable action)
描述从接口CompletionStage复制返回一个新的CompletionStage,当这个或另一个给定阶段正常完成时,执行给定的操作。 请参阅CompletionStage文档,了解覆盖异常完成的规则。- Specified by:
-
runAfterEither在接口CompletionStage<T> - 参数
-
other- 其他CompletionStage -
action- 在完成返回的CompletionStage之前执行的操作 - 结果
- 新的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.flatMap和Stream.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
-
toCompletableFuture
public CompletableFuture<T> toCompletableFuture()
返回此CompletableFuture。- Specified by:
-
toCompletableFuture在接口CompletionStage<T> - 结果
- 这个CompletableFuture
-
exceptionally
public CompletableFuture<T> exceptionally(Function<Throwable,? extends T> fn)
返回一个新的CompletableFuture,当CompletableFuture完成时完成,结果是异常触发此CompletableFuture的完成特殊功能的给定功能; 否则,如果此CompletableFuture正常完成,则返回的CompletableFuture也会以相同的值正常完成。 注意:使用方法whenComplete和handle可以使用此功能更灵活的版本。- 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。
-
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的数量,如果有的话。
-
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- aTimeUnit确定如何解释timeout参数 - 结果
- 这个CompletableFuture
- 从以下版本开始:
- 9
-
completeOnTimeout
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
如果在给定的超时之前未完成,则使用给定值完成此CompletableFuture。- 参数
-
value- 超时时使用的值 -
timeout- 在给定值正常完成之前等待多长时间,以unit为单位 -
unit- aTimeUnit确定如何解释timeout参数 - 结果
- 这个CompletableFuture
- 从以下版本开始:
- 9
-
delayedExecutor
public static Executor delayedExecutor(long delay, TimeUnit unit, Executor executor)
返回一个新的Executor,它在给定的延迟之后向给定的基本执行器提交一个任务(或者如果非正的则不会延迟)。 每个延迟都是在调用返回的执行者的execute方法时开始的。- 参数
-
delay- 延迟多久,以unit为单位 -
unit- aTimeUnit确定如何解释delay参数 -
executor- 基地执行人 - 结果
- 新推迟执行人
- 从以下版本开始:
- 9
-
delayedExecutor
public static Executor delayedExecutor(long delay, TimeUnit unit)
返回一个新的执行程序,它在给定的延迟之后将任务提交给默认的执行程序(或者如果不为正,则不会延迟)。 每个延迟在调用返回的执行者的execute方法时开始。- 参数
-
delay- 以unit为单位延迟unit -
unit- aTimeUnit确定如何解释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
-
-