Module java.base
Package java.util.concurrent

# Interface CompletionStage

=
public abstract interface CompletionStage<T>

## Methods

- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> acceptEither(java.util.concurrent.CompletionStage<? extends T> arg0, java.util.function.Consumer<? super T> arg1)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T> arg0, java.util.function.Consumer<? super T> arg1)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> acceptEitherAsync(java.util.concurrent.CompletionStage<? extends T> arg0, java.util.function.Consumer<? super T> arg1, java.util.concurrent.Executor arg2)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> applyToEither(java.util.concurrent.CompletionStage<? extends T> arg0, java.util.function.Function<? super T, U> arg1)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T> arg0, java.util.function.Function<? super T, U> arg1)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> applyToEitherAsync(java.util.concurrent.CompletionStage<? extends T> arg0, java.util.function.Function<? super T, U> arg1, java.util.concurrent.Executor arg2)
- =
  public abstract java.util.concurrent.CompletionStage<T> exceptionally(java.util.function.Function<java.lang.Throwable, ? extends T> arg0)
- =
  public default java.util.concurrent.CompletionStage<T> exceptionallyAsync(java.util.function.Function<java.lang.Throwable, ? extends T> arg0)
- =
  public default java.util.concurrent.CompletionStage<T> exceptionallyAsync(java.util.function.Function<java.lang.Throwable, ? extends T> arg0, java.util.concurrent.Executor arg1)
- =
  public default java.util.concurrent.CompletionStage<T> exceptionallyCompose(java.util.function.Function<java.lang.Throwable, ? extends java.util.concurrent.CompletionStage<T>> arg0)
- =
  public default java.util.concurrent.CompletionStage<T> exceptionallyComposeAsync(java.util.function.Function<java.lang.Throwable, ? extends java.util.concurrent.CompletionStage<T>> arg0)
- =
  public default java.util.concurrent.CompletionStage<T> exceptionallyComposeAsync(java.util.function.Function<java.lang.Throwable, ? extends java.util.concurrent.CompletionStage<T>> arg0, java.util.concurrent.Executor arg1)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U> arg0)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U> arg0)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U> arg0, java.util.concurrent.Executor arg1)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterBoth(java.util.concurrent.CompletionStage<?> arg0, java.lang.Runnable arg1)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?> arg0, java.lang.Runnable arg1)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterBothAsync(java.util.concurrent.CompletionStage<?> arg0, java.lang.Runnable arg1, java.util.concurrent.Executor arg2)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterEither(java.util.concurrent.CompletionStage<?> arg0, java.lang.Runnable arg1)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?> arg0, java.lang.Runnable arg1)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> runAfterEitherAsync(java.util.concurrent.CompletionStage<?> arg0, java.lang.Runnable arg1, java.util.concurrent.Executor arg2)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenAccept(java.util.function.Consumer<? super T> arg0)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T> arg0)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptAsync(java.util.function.Consumer<? super T> arg0, java.util.concurrent.Executor arg1)
- =
  public abstract <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBoth(java.util.concurrent.CompletionStage<? extends U> arg0, java.util.function.BiConsumer<? super T, ? super U> arg1)
- =
  public abstract <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U> arg0, java.util.function.BiConsumer<? super T, ? super U> arg1)
- =
  public abstract <U> java.util.concurrent.CompletionStage<java.lang.Void> thenAcceptBothAsync(java.util.concurrent.CompletionStage<? extends U> arg0, java.util.function.BiConsumer<? super T, ? super U> arg1, java.util.concurrent.Executor arg2)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> thenApply(java.util.function.Function<? super T, ? extends U> arg0)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T, ? extends U> arg0)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> thenApplyAsync(java.util.function.Function<? super T, ? extends U> arg0, java.util.concurrent.Executor arg1)
- =
  public abstract <U, V> java.util.concurrent.CompletionStage<V> thenCombine(java.util.concurrent.CompletionStage<? extends U> arg0, java.util.function.BiFunction<? super T, ? super U, ? extends V> arg1)
- =
  public abstract <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U> arg0, java.util.function.BiFunction<? super T, ? super U, ? extends V> arg1)
- =
  public abstract <U, V> java.util.concurrent.CompletionStage<V> thenCombineAsync(java.util.concurrent.CompletionStage<? extends U> arg0, java.util.function.BiFunction<? super T, ? super U, ? extends V> arg1, java.util.concurrent.Executor arg2)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>> arg0)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>> arg0)
- =
  public abstract <U> java.util.concurrent.CompletionStage<U> thenComposeAsync(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>> arg0, java.util.concurrent.Executor arg1)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenRun(java.lang.Runnable arg0)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(java.lang.Runnable arg0)
- =
  public abstract java.util.concurrent.CompletionStage<java.lang.Void> thenRunAsync(java.lang.Runnable arg0, java.util.concurrent.Executor arg1)
- =
  public abstract java.util.concurrent.CompletableFuture<T> toCompletableFuture()
- =
  public abstract java.util.concurrent.CompletionStage<T> whenComplete(java.util.function.BiConsumer<? super T, ? super java.lang.Throwable> arg0)
- =
  public abstract java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T, ? super java.lang.Throwable> arg0)
- =
  public abstract java.util.concurrent.CompletionStage<T> whenCompleteAsync(java.util.function.BiConsumer<? super T, ? super java.lang.Throwable> arg0, java.util.concurrent.Executor arg1)

## Summary

No differences.