| Package | Description | 
|---|---|
| java.util.concurrent | Utility classes commonly useful in concurrent programming. | 
| Modifier and Type | Class and Description | 
|---|---|
| class  | CompletableFuture<T>A  Futurethat may be explicitly completed (setting its
 value and status), and may be used as aCompletionStage,
 supporting dependent functions and actions that trigger upon its
 completion. | 
| Modifier and Type | Method and Description | 
|---|---|
| CompletionStage<Void> | CompletionStage. acceptEither(CompletionStage<? extends T> other,
            Consumer<? super T> action)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed with the
 corresponding result as argument to the supplied action. | 
| CompletionStage<Void> | CompletionStage. acceptEitherAsync(CompletionStage<? extends T> other,
                 Consumer<? super T> action)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed using this
 stage's default asynchronous execution facility, with the
 corresponding result as argument to the supplied action. | 
| CompletionStage<Void> | CompletionStage. acceptEitherAsync(CompletionStage<? extends T> other,
                 Consumer<? super T> action,
                 Executor executor)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed using the
 supplied executor, with the corresponding result as argument to
 the supplied function. | 
| <U> CompletionStage<U> | CompletionStage. applyToEither(CompletionStage<? extends T> other,
             Function<? super T,U> fn)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed with the
 corresponding result as argument to the supplied function. | 
| <U> CompletionStage<U> | CompletionStage. applyToEitherAsync(CompletionStage<? extends T> other,
                  Function<? super T,U> fn)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed using this
 stage's default asynchronous execution facility, with the
 corresponding result as argument to the supplied function. | 
| <U> CompletionStage<U> | CompletionStage. applyToEitherAsync(CompletionStage<? extends T> other,
                  Function<? super T,U> fn,
                  Executor executor)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed using the
 supplied executor, with the corresponding result as argument to
 the supplied function. | 
| CompletionStage<T> | CompletionStage. exceptionally(Function<Throwable,? extends T> fn)Returns a new CompletionStage that, when this stage completes
 exceptionally, is executed with this stage's exception as the
 argument to the supplied function. | 
| <U> CompletionStage<U> | CompletionStage. handle(BiFunction<? super T,Throwable,? extends U> fn)Returns a new CompletionStage that, when this stage completes
 either normally or exceptionally, is executed with this stage's
 result and exception as arguments to the supplied function. | 
| <U> CompletionStage<U> | CompletionStage. handleAsync(BiFunction<? super T,Throwable,? extends U> fn)Returns a new CompletionStage that, when this stage completes
 either normally or exceptionally, is executed using this stage's
 default asynchronous execution facility, with this stage's
 result and exception as arguments to the supplied function. | 
| <U> CompletionStage<U> | CompletionStage. handleAsync(BiFunction<? super T,Throwable,? extends U> fn,
           Executor executor)Returns a new CompletionStage that, when this stage completes
 either normally or exceptionally, is executed using the
 supplied executor, with this stage's result and exception as
 arguments to the supplied function. | 
| CompletionStage<Void> | CompletionStage. runAfterBoth(CompletionStage<?> other,
            Runnable action)Returns a new CompletionStage that, when this and the other
 given stage both complete normally, executes the given action. | 
| CompletionStage<Void> | CompletionStage. runAfterBothAsync(CompletionStage<?> other,
                 Runnable action)Returns a new CompletionStage that, when this and the other
 given stage complete normally, executes the given action using
 this stage's default asynchronous execution facility. | 
| CompletionStage<Void> | CompletionStage. runAfterBothAsync(CompletionStage<?> other,
                 Runnable action,
                 Executor executor)Returns a new CompletionStage that, when this and the other
 given stage complete normally, executes the given action using
 the supplied executor. | 
| CompletionStage<Void> | CompletionStage. runAfterEither(CompletionStage<?> other,
              Runnable action)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, executes the given action. | 
| CompletionStage<Void> | CompletionStage. runAfterEitherAsync(CompletionStage<?> other,
                   Runnable action)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, executes the given action
 using this stage's default asynchronous execution facility. | 
| CompletionStage<Void> | CompletionStage. runAfterEitherAsync(CompletionStage<?> other,
                   Runnable action,
                   Executor executor)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, executes the given action
 using the supplied executor. | 
| CompletionStage<Void> | CompletionStage. thenAccept(Consumer<? super T> action)Returns a new CompletionStage that, when this stage completes
 normally, is executed with this stage's result as the argument
 to the supplied action. | 
| CompletionStage<Void> | CompletionStage. thenAcceptAsync(Consumer<? super T> action)Returns a new CompletionStage that, when this stage completes
 normally, is executed using this stage's default asynchronous
 execution facility, with this stage's result as the argument to
 the supplied action. | 
| CompletionStage<Void> | CompletionStage. thenAcceptAsync(Consumer<? super T> action,
               Executor executor)Returns a new CompletionStage that, when this stage completes
 normally, is executed using the supplied Executor, with this
 stage's result as the argument to the supplied action. | 
| <U> CompletionStage<Void> | CompletionStage. thenAcceptBoth(CompletionStage<? extends U> other,
              BiConsumer<? super T,? super U> action)Returns a new CompletionStage that, when this and the other
 given stage both complete normally, is executed with the two
 results as arguments to the supplied action. | 
| <U> CompletionStage<Void> | CompletionStage. thenAcceptBothAsync(CompletionStage<? extends U> other,
                   BiConsumer<? super T,? super U> action)Returns a new CompletionStage that, when this and the other
 given stage complete normally, is executed using this stage's
 default asynchronous execution facility, with the two results
 as arguments to the supplied action. | 
| <U> CompletionStage<Void> | CompletionStage. thenAcceptBothAsync(CompletionStage<? extends U> other,
                   BiConsumer<? super T,? super U> action,
                   Executor executor)Returns a new CompletionStage that, when this and the other
 given stage complete normally, is executed using the supplied
 executor, with the two results as arguments to the supplied
 function. | 
| <U> CompletionStage<U> | CompletionStage. thenApply(Function<? super T,? extends U> fn)Returns a new CompletionStage that, when this stage completes
 normally, is executed with this stage's result as the argument
 to the supplied function. | 
| <U> CompletionStage<U> | CompletionStage. thenApplyAsync(Function<? super T,? extends U> fn)Returns a new CompletionStage that, when this stage completes
 normally, is executed using this stage's default asynchronous
 execution facility, with this stage's result as the argument to
 the supplied function. | 
| <U> CompletionStage<U> | CompletionStage. thenApplyAsync(Function<? super T,? extends U> fn,
              Executor executor)Returns a new CompletionStage that, when this stage completes
 normally, is executed using the supplied Executor, with this
 stage's result as the argument to the supplied function. | 
| <U,V> CompletionStage<V> | CompletionStage. thenCombine(CompletionStage<? extends U> other,
           BiFunction<? super T,? super U,? extends V> fn)Returns a new CompletionStage that, when this and the other
 given stage both complete normally, is executed with the two
 results as arguments to the supplied function. | 
| <U,V> CompletionStage<V> | CompletionStage. thenCombineAsync(CompletionStage<? extends U> other,
                BiFunction<? super T,? super U,? extends V> fn)Returns a new CompletionStage that, when this and the other
 given stage complete normally, is executed using this stage's
 default asynchronous execution facility, with the two results
 as arguments to the supplied function. | 
| <U,V> CompletionStage<V> | CompletionStage. thenCombineAsync(CompletionStage<? extends U> other,
                BiFunction<? super T,? super U,? extends V> fn,
                Executor executor)Returns a new CompletionStage that, when this and the other
 given stage complete normally, is executed using the supplied
 executor, with the two results as arguments to the supplied
 function. | 
| <U> CompletionStage<U> | CompletionStage. thenCompose(Function<? super T,? extends CompletionStage<U>> fn)Returns a new CompletionStage that, when this stage completes
 normally, is executed with this stage as the argument
 to the supplied function. | 
| <U> CompletionStage<U> | CompletionStage. thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn)Returns a new CompletionStage that, when this stage completes
 normally, is executed using this stage's default asynchronous
 execution facility, with this stage as the argument to the
 supplied function. | 
| <U> CompletionStage<U> | CompletionStage. thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn,
                Executor executor)Returns a new CompletionStage that, when this stage completes
 normally, is executed using the supplied Executor, with this
 stage's result as the argument to the supplied function. | 
| CompletionStage<Void> | CompletionStage. thenRun(Runnable action)Returns a new CompletionStage that, when this stage completes
 normally, executes the given action. | 
| CompletionStage<Void> | CompletionStage. thenRunAsync(Runnable action)Returns a new CompletionStage that, when this stage completes
 normally, executes the given action using this stage's default
 asynchronous execution facility. | 
| CompletionStage<Void> | CompletionStage. thenRunAsync(Runnable action,
            Executor executor)Returns a new CompletionStage that, when this stage completes
 normally, executes the given action using the supplied Executor. | 
| CompletionStage<T> | CompletionStage. whenComplete(BiConsumer<? super T,? super Throwable> action)Returns a new CompletionStage with the same result or exception as
 this stage, that executes the given action when this stage completes. | 
| CompletionStage<T> | CompletionStage. whenCompleteAsync(BiConsumer<? super T,? super Throwable> action)Returns a new CompletionStage with the same result or exception as
 this stage, that executes the given action using this stage's
 default asynchronous execution facility when this stage completes. | 
| CompletionStage<T> | CompletionStage. whenCompleteAsync(BiConsumer<? super T,? super Throwable> action,
                 Executor executor)Returns a new CompletionStage with the same result or exception as
 this stage, that executes the given action using the supplied
 Executor when this stage completes. | 
| Modifier and Type | Method and Description | 
|---|---|
| CompletionStage<Void> | CompletionStage. acceptEither(CompletionStage<? extends T> other,
            Consumer<? super T> action)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed with the
 corresponding result as argument to the supplied action. | 
| CompletableFuture<Void> | CompletableFuture. acceptEither(CompletionStage<? extends T> other,
            Consumer<? super T> action) | 
| CompletionStage<Void> | CompletionStage. acceptEitherAsync(CompletionStage<? extends T> other,
                 Consumer<? super T> action)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed using this
 stage's default asynchronous execution facility, with the
 corresponding result as argument to the supplied action. | 
| CompletableFuture<Void> | CompletableFuture. acceptEitherAsync(CompletionStage<? extends T> other,
                 Consumer<? super T> action) | 
| CompletionStage<Void> | CompletionStage. acceptEitherAsync(CompletionStage<? extends T> other,
                 Consumer<? super T> action,
                 Executor executor)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed using the
 supplied executor, with the corresponding result as argument to
 the supplied function. | 
| CompletableFuture<Void> | CompletableFuture. acceptEitherAsync(CompletionStage<? extends T> other,
                 Consumer<? super T> action,
                 Executor executor) | 
| <U> CompletionStage<U> | CompletionStage. applyToEither(CompletionStage<? extends T> other,
             Function<? super T,U> fn)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed with the
 corresponding result as argument to the supplied function. | 
| <U> CompletableFuture<U> | CompletableFuture. applyToEither(CompletionStage<? extends T> other,
             Function<? super T,U> fn) | 
| <U> CompletionStage<U> | CompletionStage. applyToEitherAsync(CompletionStage<? extends T> other,
                  Function<? super T,U> fn)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed using this
 stage's default asynchronous execution facility, with the
 corresponding result as argument to the supplied function. | 
| <U> CompletableFuture<U> | CompletableFuture. applyToEitherAsync(CompletionStage<? extends T> other,
                  Function<? super T,U> fn) | 
| <U> CompletionStage<U> | CompletionStage. applyToEitherAsync(CompletionStage<? extends T> other,
                  Function<? super T,U> fn,
                  Executor executor)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, is executed using the
 supplied executor, with the corresponding result as argument to
 the supplied function. | 
| <U> CompletableFuture<U> | CompletableFuture. applyToEitherAsync(CompletionStage<? extends T> other,
                  Function<? super T,U> fn,
                  Executor executor) | 
| CompletionStage<Void> | CompletionStage. runAfterBoth(CompletionStage<?> other,
            Runnable action)Returns a new CompletionStage that, when this and the other
 given stage both complete normally, executes the given action. | 
| CompletableFuture<Void> | CompletableFuture. runAfterBoth(CompletionStage<?> other,
            Runnable action) | 
| CompletionStage<Void> | CompletionStage. runAfterBothAsync(CompletionStage<?> other,
                 Runnable action)Returns a new CompletionStage that, when this and the other
 given stage complete normally, executes the given action using
 this stage's default asynchronous execution facility. | 
| CompletableFuture<Void> | CompletableFuture. runAfterBothAsync(CompletionStage<?> other,
                 Runnable action) | 
| CompletionStage<Void> | CompletionStage. runAfterBothAsync(CompletionStage<?> other,
                 Runnable action,
                 Executor executor)Returns a new CompletionStage that, when this and the other
 given stage complete normally, executes the given action using
 the supplied executor. | 
| CompletableFuture<Void> | CompletableFuture. runAfterBothAsync(CompletionStage<?> other,
                 Runnable action,
                 Executor executor) | 
| CompletionStage<Void> | CompletionStage. runAfterEither(CompletionStage<?> other,
              Runnable action)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, executes the given action. | 
| CompletableFuture<Void> | CompletableFuture. runAfterEither(CompletionStage<?> other,
              Runnable action) | 
| CompletionStage<Void> | CompletionStage. runAfterEitherAsync(CompletionStage<?> other,
                   Runnable action)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, executes the given action
 using this stage's default asynchronous execution facility. | 
| CompletableFuture<Void> | CompletableFuture. runAfterEitherAsync(CompletionStage<?> other,
                   Runnable action) | 
| CompletionStage<Void> | CompletionStage. runAfterEitherAsync(CompletionStage<?> other,
                   Runnable action,
                   Executor executor)Returns a new CompletionStage that, when either this or the
 other given stage complete normally, executes the given action
 using the supplied executor. | 
| CompletableFuture<Void> | CompletableFuture. runAfterEitherAsync(CompletionStage<?> other,
                   Runnable action,
                   Executor executor) | 
| <U> CompletionStage<Void> | CompletionStage. thenAcceptBoth(CompletionStage<? extends U> other,
              BiConsumer<? super T,? super U> action)Returns a new CompletionStage that, when this and the other
 given stage both complete normally, is executed with the two
 results as arguments to the supplied action. | 
| <U> CompletableFuture<Void> | CompletableFuture. thenAcceptBoth(CompletionStage<? extends U> other,
              BiConsumer<? super T,? super U> action) | 
| <U> CompletionStage<Void> | CompletionStage. thenAcceptBothAsync(CompletionStage<? extends U> other,
                   BiConsumer<? super T,? super U> action)Returns a new CompletionStage that, when this and the other
 given stage complete normally, is executed using this stage's
 default asynchronous execution facility, with the two results
 as arguments to the supplied action. | 
| <U> CompletableFuture<Void> | CompletableFuture. thenAcceptBothAsync(CompletionStage<? extends U> other,
                   BiConsumer<? super T,? super U> action) | 
| <U> CompletionStage<Void> | CompletionStage. thenAcceptBothAsync(CompletionStage<? extends U> other,
                   BiConsumer<? super T,? super U> action,
                   Executor executor)Returns a new CompletionStage that, when this and the other
 given stage complete normally, is executed using the supplied
 executor, with the two results as arguments to the supplied
 function. | 
| <U> CompletableFuture<Void> | CompletableFuture. thenAcceptBothAsync(CompletionStage<? extends U> other,
                   BiConsumer<? super T,? super U> action,
                   Executor executor) | 
| <U,V> CompletionStage<V> | CompletionStage. thenCombine(CompletionStage<? extends U> other,
           BiFunction<? super T,? super U,? extends V> fn)Returns a new CompletionStage that, when this and the other
 given stage both complete normally, is executed with the two
 results as arguments to the supplied function. | 
| <U,V> CompletableFuture<V> | CompletableFuture. thenCombine(CompletionStage<? extends U> other,
           BiFunction<? super T,? super U,? extends V> fn) | 
| <U,V> CompletionStage<V> | CompletionStage. thenCombineAsync(CompletionStage<? extends U> other,
                BiFunction<? super T,? super U,? extends V> fn)Returns a new CompletionStage that, when this and the other
 given stage complete normally, is executed using this stage's
 default asynchronous execution facility, with the two results
 as arguments to the supplied function. | 
| <U,V> CompletableFuture<V> | CompletableFuture. thenCombineAsync(CompletionStage<? extends U> other,
                BiFunction<? super T,? super U,? extends V> fn) | 
| <U,V> CompletionStage<V> | CompletionStage. thenCombineAsync(CompletionStage<? extends U> other,
                BiFunction<? super T,? super U,? extends V> fn,
                Executor executor)Returns a new CompletionStage that, when this and the other
 given stage complete normally, is executed using the supplied
 executor, with the two results as arguments to the supplied
 function. | 
| <U,V> CompletableFuture<V> | CompletableFuture. thenCombineAsync(CompletionStage<? extends U> other,
                BiFunction<? super T,? super U,? extends V> fn,
                Executor executor) | 
| Modifier and Type | Method and Description | 
|---|---|
| <U> CompletionStage<U> | CompletionStage. thenCompose(Function<? super T,? extends CompletionStage<U>> fn)Returns a new CompletionStage that, when this stage completes
 normally, is executed with this stage as the argument
 to the supplied function. | 
| <U> CompletableFuture<U> | CompletableFuture. thenCompose(Function<? super T,? extends CompletionStage<U>> fn) | 
| <U> CompletionStage<U> | CompletionStage. thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn)Returns a new CompletionStage that, when this stage completes
 normally, is executed using this stage's default asynchronous
 execution facility, with this stage as the argument to the
 supplied function. | 
| <U> CompletableFuture<U> | CompletableFuture. thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn) | 
| <U> CompletionStage<U> | CompletionStage. thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn,
                Executor executor)Returns a new CompletionStage that, when this stage completes
 normally, is executed using the supplied Executor, with this
 stage's result as the argument to the supplied function. | 
| <U> CompletableFuture<U> | CompletableFuture. thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn,
                Executor executor) | 
 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, 2025, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.