Uses of Class java.util.concurrent.CompletableFuture (Java Platform SE 8 )
Date: 2026-08-19

## Uses of Class
java.util.concurrent.CompletableFuture

- Packages that use CompletableFuture
  Package | Description
  --- | ---
  java.util.concurrent | Utility classes commonly useful in concurrent programming.

- - ### Uses of CompletableFuture in java.util.concurrent

    Methods in java.util.concurrent that return CompletableFuture
    Modifier and Type | Method and Description
    --- | ---
    `CompletableFuture<Void>` | CompletableFuture.`acceptEither(CompletionStage<? extends T> other, Consumer<? super T> action)`
    `CompletableFuture<Void>` | CompletableFuture.`acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action)`
    `CompletableFuture<Void>` | CompletableFuture.`acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action, Executor executor)`
    `static CompletableFuture<Void>` | CompletableFuture.`allOf(CompletableFuture<?>... cfs)` Returns a new CompletableFuture that is completed when all of the given CompletableFutures complete.
    `static CompletableFuture<Object>` | CompletableFuture.`anyOf(CompletableFuture<?>... cfs)` Returns a new CompletableFuture that is completed when any of the given CompletableFutures complete, with the same result.
    `<U> CompletableFuture<U>` | CompletableFuture.`applyToEither(CompletionStage<? extends T> other, Function<? super T,U> fn)`
    `<U> CompletableFuture<U>` | CompletableFuture.`applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn)`
    `<U> CompletableFuture<U>` | CompletableFuture.`applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn, Executor executor)`
    `static <U> CompletableFuture<U>` | CompletableFuture.`completedFuture(U value)` Returns a new CompletableFuture that is already completed with the given value.
    `CompletableFuture<T>` | CompletableFuture.`exceptionally(Function<Throwable,? extends T> fn)` Returns a new CompletableFuture that is completed when this CompletableFuture completes, with the result of the given function of the exception triggering this CompletableFuture's completion when it completes exceptionally; otherwise, if this CompletableFuture completes normally, then the returned CompletableFuture also completes normally with the same value.
    `<U> CompletableFuture<U>` | CompletableFuture.`handle(BiFunction<? super T,Throwable,? extends U> fn)`
    `<U> CompletableFuture<U>` | CompletableFuture.`handleAsync(BiFunction<? super T,Throwable,? extends U> fn)`
    `<U> CompletableFuture<U>` | CompletableFuture.`handleAsync(BiFunction<? super T,Throwable,? extends U> fn, Executor executor)`
    `CompletableFuture<Void>` | CompletableFuture.`runAfterBoth(CompletionStage<?> other, Runnable action)`
    `CompletableFuture<Void>` | CompletableFuture.`runAfterBothAsync(CompletionStage<?> other, Runnable action)`
    `CompletableFuture<Void>` | CompletableFuture.`runAfterBothAsync(CompletionStage<?> other, Runnable action, Executor executor)`
    `CompletableFuture<Void>` | CompletableFuture.`runAfterEither(CompletionStage<?> other, Runnable action)`
    `CompletableFuture<Void>` | CompletableFuture.`runAfterEitherAsync(CompletionStage<?> other, Runnable action)`
    `CompletableFuture<Void>` | CompletableFuture.`runAfterEitherAsync(CompletionStage<?> other, Runnable action, Executor executor)`
    `static CompletableFuture<Void>` | CompletableFuture.`runAsync(Runnable runnable)` Returns a new CompletableFuture that is asynchronously completed by a task running in the `ForkJoinPool.commonPool()` after it runs the given action.
    `static CompletableFuture<Void>` | CompletableFuture.`runAsync(Runnable runnable, Executor executor)` Returns a new CompletableFuture that is asynchronously completed by a task running in the given executor after it runs the given action.
    `static <U> CompletableFuture<U>` | CompletableFuture.`supplyAsync(Supplier<U> supplier)` Returns a new CompletableFuture that is asynchronously completed by a task running in the `ForkJoinPool.commonPool()` with the value obtained by calling the given Supplier.
    `static <U> CompletableFuture<U>` | CompletableFuture.`supplyAsync(Supplier<U> supplier, Executor executor)` Returns a new CompletableFuture that is asynchronously completed by a task running in the given executor with the value obtained by calling the given Supplier.
    `CompletableFuture<Void>` | CompletableFuture.`thenAccept(Consumer<? super T> action)`
    `CompletableFuture<Void>` | CompletableFuture.`thenAcceptAsync(Consumer<? super T> action)`
    `CompletableFuture<Void>` | CompletableFuture.`thenAcceptAsync(Consumer<? super T> action, Executor executor)`
    `<U> CompletableFuture<Void>` | CompletableFuture.`thenAcceptBoth(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)`
    `<U> CompletableFuture<Void>` | CompletableFuture.`thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)`
    `<U> CompletableFuture<Void>` | CompletableFuture.`thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action, Executor executor)`
    `<U> CompletableFuture<U>` | CompletableFuture.`thenApply(Function<? super T,? extends U> fn)`
    `<U> CompletableFuture<U>` | CompletableFuture.`thenApplyAsync(Function<? super T,? extends U> fn)`
    `<U> CompletableFuture<U>` | CompletableFuture.`thenApplyAsync(Function<? super T,? extends U> fn, Executor executor)`
    `<U,V> CompletableFuture<V>` | CompletableFuture.`thenCombine(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)`
    `<U,V> CompletableFuture<V>` | CompletableFuture.`thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn)`
    `<U,V> CompletableFuture<V>` | CompletableFuture.`thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T,? super U,? extends V> fn, Executor executor)`
    `<U> CompletableFuture<U>` | CompletableFuture.`thenCompose(Function<? super T,? extends CompletionStage<U>> fn)`
    `<U> CompletableFuture<U>` | CompletableFuture.`thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn)`
    `<U> CompletableFuture<U>` | CompletableFuture.`thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn, Executor executor)`
    `CompletableFuture<Void>` | CompletableFuture.`thenRun(Runnable action)`
    `CompletableFuture<Void>` | CompletableFuture.`thenRunAsync(Runnable action)`
    `CompletableFuture<Void>` | CompletableFuture.`thenRunAsync(Runnable action, Executor executor)`
    `CompletableFuture<T>` | CompletionStage.`toCompletableFuture()` Returns a `CompletableFuture` maintaining the same completion properties as this stage.
    `CompletableFuture<T>` | CompletableFuture.`toCompletableFuture()` Returns this CompletableFuture.
    `CompletableFuture<T>` | CompletableFuture.`whenComplete(BiConsumer<? super T,? super Throwable> action)`
    `CompletableFuture<T>` | CompletableFuture.`whenCompleteAsync(BiConsumer<? super T,? super Throwable> action)`
    `CompletableFuture<T>` | CompletableFuture.`whenCompleteAsync(BiConsumer<? super T,? super Throwable> action, Executor executor)`

    Methods in java.util.concurrent with parameters of type CompletableFuture
    Modifier and Type | Method and Description
    --- | ---
    `static CompletableFuture<Void>` | CompletableFuture.`allOf(CompletableFuture<?>... cfs)` Returns a new CompletableFuture that is completed when all of the given CompletableFutures complete.
    `static CompletableFuture<Object>` | CompletableFuture.`anyOf(CompletableFuture<?>... cfs)` Returns a new CompletableFuture that is completed when any of the given CompletableFutures complete, with the same result.

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.