Spec-Zone.ru › OpenJDK 25

Класс CompletableFuture<T>

java.lang.Object
java.util.concurrent.CompletableFuture<T>
Параметры типа:
T — тип результата, возвращаемого методами join и get этой future
Все реализуемые интерфейсы:
CompletionStage<T>, Future<T>
public class CompletableFuture<T> extends Object implements Future<T>, CompletionStage<T>
Объект Future, выполнение которого может быть завершено явно (с установкой значения и состояния) и который можно использовать как CompletionStage, поддерживающий зависимые функции и действия, запускаемые после его завершения.

Если две или более потоков пытаются вызвать у CompletableFuture метод complete, completeExceptionally или cancel, успешно это удаётся только одному из них.

Помимо этих и связанных с ними методов для непосредственного управления состоянием и результатами, CompletableFuture реализует интерфейс CompletionStage со следующими правилами:

  • Действия, передаваемые для зависимого завершения неасинхронных методов, могут выполняться потоком, завершающим текущий CompletableFuture, либо любым другим потоком, вызывающим метод завершения.
  • Все асинхронные методы без явно заданного аргумента Executor, а также методы с задержкой выполняются с использованием ForkJoinPool.commonPool(). Исполнитель по умолчанию для асинхронных операций можно переопределить в подклассах для нестатических методов, определив метод defaultExecutor(). Для упрощения мониторинга, отладки и отслеживания все создаваемые асинхронные задачи являются экземплярами маркерного интерфейса CompletableFuture.AsynchronousCompletionTask. Для операций с задержкой можно использовать методы-адаптеры, определённые в этом классе, например: supplyAsync(supplier, delayedExecutor(timeout, timeUnit)).
  • Все методы CompletionStage реализованы независимо от других открытых методов, поэтому переопределение одного метода в подклассе не влияет на поведение остальных.
  • Все методы CompletionStage возвращают CompletableFuture. Чтобы ограничить использование только методами, определёнными в интерфейсе CompletionStage, используйте метод minimalCompletionStage(). Чтобы гарантировать, что клиенты не смогут изменять future самостоятельно, используйте метод copy().

Кроме того, CompletableFuture реализует интерфейс Future со следующими правилами:

  • Поскольку этот класс (в отличие от FutureTask) не управляет напрямую вычислением, которое приводит к его завершению, отмена рассматривается как ещё одна форма завершения с исключением. Метод cancel действует так же, как completeExceptionally(new CancellationException()). Метод isCompletedExceptionally() позволяет определить, завершился ли CompletableFuture каким-либо исключительным образом.
  • При завершении с исключением CompletionException методы get() и get(long, TimeUnit) выбрасывают ExecutionException с той же причиной, что и соответствующий CompletionException. Для упрощения использования в большинстве случаев этот класс также определяет методы join() и getNow(T), которые в таких случаях выбрасывают непосредственно CompletionException.

Аргументы, используемые для передачи результата завершения (то есть параметры типа T) в методы, которые их принимают, могут иметь значение null, однако передача 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

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static interface  CompletableFuture.AsynchronousCompletionTask
Маркерный интерфейс, идентифицирующий асинхронные задачи, создаваемые методами async.

Вложенные классы/интерфейсы, объявленные в интерфейсе Future

Future.State

Краткое описание конструкторов

Конструктор Описание
CompletableFuture()
Создаёт новый незавершённый CompletableFuture.

Краткое описание методов

Модификатор и тип Метод Описание
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, который завершается после завершения всех заданных CompletableFuture.
static CompletableFuture<Object> anyOf(CompletableFuture<?>... cfs)
Возвращает новый CompletableFuture, который завершается при завершении любого из заданных CompletableFuture и содержит тот же результат.
<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, в котором при нормальном завершении этого этапа или другого заданного этапа выполняется переданная функция с использованием указанного исполнителя; соответствующий результат передаётся в качестве аргумента.
boolean cancel(boolean mayInterruptIfRunning)
Если выполнение ещё не завершено, завершает этот CompletableFuture объектом CancellationException.
boolean complete(T value)
Если выполнение ещё не завершено, задаёт значение, которое возвращают get() и связанные методы.
CompletableFuture<T> completeAsync(Supplier<? extends T> supplier)
Завершает этот CompletableFuture результатом функции Supplier, вызванной асинхронной задачей с использованием исполнителя по умолчанию.
CompletableFuture<T> completeAsync(Supplier<? extends T> supplier, Executor executor)
Завершает этот CompletableFuture результатом функции Supplier, вызванной асинхронной задачей с использованием заданного исполнителя.
static <U> CompletableFuture<U> completedFuture(U value)
Возвращает новый CompletableFuture, уже завершённый заданным значением.
static <U> CompletionStage<U> completedStage(U value)
Возвращает новый CompletionStage, уже завершённый заданным значением и поддерживающий только методы интерфейса CompletionStage.
boolean completeExceptionally(Throwable ex)
Если выполнение ещё не завершено, приводит к тому, что get() и связанные методы выбрасывают заданное исключение.
CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
Завершает этот CompletableFuture заданным значением, если до истечения указанного времени он не был завершён иным способом.
CompletableFuture<T> copy()
Возвращает новый CompletableFuture, который при нормальном завершении этого CompletableFuture завершается тем же значением.
Executor defaultExecutor()
Возвращает Executor по умолчанию, используемый асинхронными методами, которым не задан Executor.
static Executor delayedExecutor(long delay, TimeUnit unit)
Возвращает новый Executor, который отправляет задачу исполнителю по умолчанию после указанной задержки (или без задержки, если значение неположительное).
static Executor delayedExecutor(long delay, TimeUnit unit, Executor executor)
Возвращает новый Executor, который отправляет задачу указанному базовому исполнителю после заданной задержки (или без задержки, если значение неположительное).
CompletableFuture<T> exceptionally(Function<Throwable, ? extends T> fn)
Возвращает новый CompletionStage, в котором при исключительном завершении этого этапа выполняется переданная функция, получающая исключение этого этапа в качестве аргумента.
CompletableFuture<T> exceptionallyAsync(Function<Throwable, ? extends T> fn)
Возвращает новый CompletionStage, в котором при исключительном завершении этого этапа выполняется переданная функция, получающая исключение этого этапа в качестве аргумента; используется средство асинхронного выполнения по умолчанию для этого этапа.
CompletableFuture<T> exceptionallyAsync(Function<Throwable, ? extends T> fn, Executor executor)
Возвращает новый CompletionStage, в котором при исключительном завершении этого этапа выполняется переданная функция, получающая исключение этого этапа в качестве аргумента; используется указанный Executor.
CompletableFuture<T> exceptionallyCompose(Function<Throwable, ? extends CompletionStage<T>> fn)
Возвращает новый CompletionStage, который при исключительном завершении этого этапа составляется из результата применения переданной функции к исключению этого этапа.
CompletableFuture<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn)
Возвращает новый CompletionStage, который при исключительном завершении этого этапа составляется из результата применения переданной функции к исключению этого этапа с использованием средства асинхронного выполнения по умолчанию для этого этапа.
CompletableFuture<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn, Executor executor)
Возвращает новый CompletionStage, который при исключительном завершении этого этапа составляется из результата применения переданной функции к исключению этого этапа с использованием указанного Executor.
Throwable exceptionNow()
Возвращает исключение, выброшенное задачей, не ожидая её завершения.
static <U> CompletableFuture<U> failedFuture(Throwable ex)
Возвращает новый CompletableFuture, уже завершённый исключением с заданным исключением.
static <U> CompletionStage<U> failedStage(Throwable ex)
Возвращает новый CompletionStage, уже завершённый заданным исключением и поддерживающий только методы интерфейса CompletionStage.
T get()
При необходимости ожидает завершения этой future, а затем возвращает её результат.
T get(long timeout, TimeUnit unit)
При необходимости ожидает завершения этой future в течение заданного времени, а затем возвращает её результат, если он доступен.
T getNow(T valueIfAbsent)
Если выполнение завершено, возвращает значение результата (или выбрасывает возникшее исключение); в противном случае возвращает заданное значение valueIfAbsent.
int getNumberOfDependents()
Возвращает оценочное число CompletableFuture, завершение которых ожидает завершения этого CompletableFuture.
<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, в котором при нормальном или исключительном завершении этого этапа выполняется переданная функция с использованием указанного исполнителя; результат и исключение этого этапа передаются в качестве аргументов.
boolean isCancelled()
Возвращает true, если этот CompletableFuture был отменён до нормального завершения.
boolean isCompletedExceptionally()
Возвращает true, если этот CompletableFuture завершился исключительным образом.
boolean isDone()
Возвращает true, если выполнение завершено любым способом: нормально, с исключением или в результате отмены.
T join()
Возвращает значение результата после завершения или выбрасывает непроверяемое исключение, если выполнение завершилось исключительным образом.
CompletionStage<T> minimalCompletionStage()
Возвращает новый CompletionStage, который при нормальном завершении этого CompletableFuture завершается тем же значением и не может быть завершён независимо или иным образом использован за пределами методов, определённых интерфейсом CompletionStage.
<U> CompletableFuture<U> newIncompleteFuture()
Возвращает новый незавершённый CompletableFuture того типа, который должен возвращаться методом CompletionStage.
void obtrudeException(Throwable ex)
Принудительно вызывает выброс заданного исключения при последующих вызовах метода get() и связанных методов независимо от того, завершено ли выполнение.
void obtrudeValue(T value)
Принудительно устанавливает или сбрасывает значение, возвращаемое при последующих вызовах метода get() и связанных методов, независимо от того, завершено ли выполнение.
CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
Завершает этот CompletableFuture исключением TimeoutException, если до истечения заданного времени он не был завершён иным способом.
T resultNow()
Возвращает вычисленный результат, не ожидая завершения.
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, который асинхронно завершается задачей, выполняющей заданное действие с использованием указанного исполнителя.
Future.State state()
Возвращает состояние вычисления.
static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier)
Возвращает новый CompletableFuture, который асинхронно завершается задачей, выполняющейся в ForkJoinPool.commonPool(), значением, полученным при вызове заданного Supplier.
static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor)
Возвращает новый CompletableFuture, который асинхронно завершается задачей, выполняющейся с использованием заданного исполнителя, значением, полученным при вызове заданного Supplier.
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, в котором при нормальном завершении этого этапа выполняется переданное действие с использованием указанного Executor; результат этого этапа передаётся в качестве аргумента.
<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, в котором при нормальном завершении этого этапа выполняется переданная функция с использованием указанного Executor; результат этого этапа передаётся в качестве аргумента.
<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, который выполняет заданное действие с использованием указанного Executor при нормальном завершении этого этапа.
CompletableFuture<T> toCompletableFuture()
Возвращает этот CompletableFuture.
String toString()
Возвращает строку, описывающую этот 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 с тем же результатом или исключением, что и у этого этапа; при завершении этапа выполняется заданное действие с использованием указанного Executor.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

CompletableFuture

public CompletableFuture()
Создает новый незавершенный CompletableFuture.

Подробное описание методов

supplyAsync

public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier)
Возвращает новый CompletableFuture, который асинхронно завершается задачей, выполняющейся в ForkJoinPool.commonPool(), со значением, полученным при вызове переданного Supplier.
Параметры типа:
U — тип возвращаемого значения функции
Параметры:
supplier — функция, возвращающая значение, которым будет завершен возвращаемый CompletableFuture
Возвращает:
новый CompletableFuture

supplyAsync

public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor)
Возвращает новый CompletableFuture, который асинхронно завершается задачей, выполняющейся в переданном исполнителе, со значением, полученным при вызове переданного Supplier.
Параметры типа:
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, если вычисление завершено любым способом: нормально, с исключением или отменено.
Определено в:
isDone в интерфейсе Future<T>
Возвращает:
true, если вычисление завершено

get

public T get() throws InterruptedException, ExecutionException
При необходимости ожидает завершения данного future, а затем возвращает его результат.
Определено в:
get в интерфейсе Future<T>
Возвращает:
результирующее значение
Выбрасывает:
CancellationException — если данный future был отменен
ExecutionException — если данный future завершился с исключением
InterruptedException — если текущий поток был прерван во время ожидания

get

public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
При необходимости ожидает завершения данного future в течение не более указанного времени, а затем возвращает его результат, если он доступен.
Определено в:
get в интерфейсе Future<T>
Параметры:
timeout — максимальное время ожидания
unit — единица измерения аргумента тайм-аута
Возвращает:
результирующее значение
Выбрасывает:
CancellationException — если данный future был отменен
ExecutionException — если данный future завершился с исключением
InterruptedException — если текущий поток был прерван во время ожидания
TimeoutException — если время ожидания истекло

join

public T join()
После завершения возвращает результирующее значение или выбрасывает (непроверяемое) исключение, если вычисление завершилось с исключением. Для лучшего соответствия общим функциональным формам, если вычисление, участвовавшее в завершении этого CompletableFuture, выбросило исключение, данный метод выбрасывает (непроверяемое) CompletionException, причиной которого является исходное исключение.
Возвращает:
результирующее значение
Выбрасывает:
CancellationException — если вычисление было отменено
CompletionException — если данный future завершился с исключением или вычисление при завершении выбросило исключение

getNow

public T getNow(T valueIfAbsent)
Если вычисление завершено, возвращает результирующее значение (или выбрасывает обнаруженное исключение), иначе возвращает заданное значение valueIfAbsent.
Параметры:
valueIfAbsent — значение, возвращаемое, если вычисление не завершено
Возвращает:
результирующее значение, если вычисление завершено, иначе заданное значение valueIfAbsent
Выбрасывает:
CancellationException — если вычисление было отменено
CompletionException — если данный future завершился с исключением или вычисление при завершении выбросило исключение

resultNow

public T resultNow()
Описание скопировано из интерфейса: Future
Возвращает вычисленный результат, не ожидая завершения.

Этот метод предназначен для случаев, когда вызывающий код знает, что задача уже успешно завершена, например при фильтрации потока объектов Future для выбора успешно завершенных задач и использовании операции отображения для получения потока результатов.

    results = futures.stream()
               .filter(f -> f.state() == Future.State.SUCCESS)
               .map(Future::resultNow)
               .toList();
Определено в:
resultNow в интерфейсе Future<T>
Возвращает:
вычисленный результат
Начиная с:
19

exceptionNow

public Throwable exceptionNow()
Описание скопировано из интерфейса: Future
Возвращает исключение, выброшенное задачей, не ожидая завершения.

Этот метод предназначен для случаев, когда вызывающий код знает, что задача уже завершилась с исключением.

Определено в:
exceptionNow в интерфейсе Future<T>
Возвращает:
исключение, выброшенное задачей
Начиная с:
19

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.

Определено в:
thenApply в интерфейсе CompletionStage<T>
Параметры типа:
U — тип возвращаемого значения функции
Параметры:
fn — функция для вычисления значения возвращаемого CompletionStage
Возвращает:
новый CompletionStage

thenApplyAsync

public <U> CompletableFuture<U> thenApplyAsync(Function<? super T, ? extends U> fn)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении данного этапа выполняет переданную функцию с использованием стандартного средства асинхронного выполнения этого этапа, передавая результат этого этапа в качестве аргумента. Правила обработки завершения с исключением см. в документации CompletionStage.
Определено в:
thenApplyAsync в интерфейсе CompletionStage<T>
Параметры типа:
U — тип возвращаемого значения функции
Параметры:
fn — функция для вычисления значения возвращаемого CompletionStage
Возвращает:
новый CompletionStage

thenApplyAsync

public <U> CompletableFuture<U> thenApplyAsync(Function<? super T, ? extends U> fn, Executor executor)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении данного этапа выполняет переданную функцию с использованием указанного Executor, передавая результат этого этапа в качестве аргумента. Правила обработки завершения с исключением см. в документации CompletionStage.
Определено в:
thenApplyAsync в интерфейсе CompletionStage<T>
Параметры типа:
U — тип возвращаемого значения функции
Параметры:
fn — функция для вычисления значения возвращаемого CompletionStage
executor — исполнитель для асинхронного выполнения
Возвращает:
новый CompletionStage

thenAccept

public CompletableFuture<Void> thenAccept(Consumer<? super T> action)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении данного этапа выполняет переданное действие, используя результат этого этапа в качестве аргумента. Правила обработки завершения с исключением см. в документации CompletionStage.
Определено в:
thenAccept в интерфейсе CompletionStage<T>
Параметры:
action — действие, которое нужно выполнить перед завершением возвращаемого CompletionStage
Возвращает:
новый CompletionStage

thenAcceptAsync

public CompletableFuture<Void> thenAcceptAsync(Consumer<? super T> action)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении данного этапа выполняет переданное действие с использованием стандартного средства асинхронного выполнения этого этапа, передавая результат этого этапа в качестве аргумента. Правила обработки завершения с исключением см. в документации CompletionStage.
Определено в:
thenAcceptAsync в интерфейсе CompletionStage<T>
Параметры:
action — действие, которое нужно выполнить перед завершением возвращаемого CompletionStage
Возвращает:
новый CompletionStage

thenAcceptAsync

public CompletableFuture<Void> thenAcceptAsync(Consumer<? super T> action, Executor executor)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении данного этапа выполняет переданное действие с использованием указанного Executor, передавая результат этого этапа в качестве аргумента. Правила обработки завершения с исключением см. в документации CompletionStage.
Определено в:
thenAcceptAsync в интерфейсе CompletionStage<T>
Параметры:
action — действие, которое нужно выполнить перед завершением возвращаемого CompletionStage
executor — исполнитель для асинхронного выполнения
Возвращает:
новый CompletionStage

thenRun

public CompletableFuture<Void> thenRun(Runnable action)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который выполняет заданное действие при нормальном завершении данного этапа. Правила обработки завершения с исключением см. в документации CompletionStage.
Определено в:
thenRun в интерфейсе CompletionStage<T>
Параметры:
action — действие, которое нужно выполнить перед завершением возвращаемого CompletionStage
Возвращает:
новый CompletionStage

thenRunAsync

public CompletableFuture<Void> thenRunAsync(Runnable action)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении данного этапа выполняет заданное действие с использованием стандартного средства асинхронного выполнения этого этапа. Правила обработки завершения с исключением см. в документации CompletionStage.
Определено в:
thenRunAsync в интерфейсе CompletionStage<T>
Параметры:
action — действие, которое нужно выполнить перед завершением возвращаемого CompletionStage
Возвращает:
новый CompletionStage

thenRunAsync

public CompletableFuture<Void> thenRunAsync(Runnable action, Executor executor)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении данного этапа выполняет заданное действие с использованием переданного Executor. Правила обработки завершения с исключением см. в документации CompletionStage.
Определено в:
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.
Определено в:
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.
Определено в:
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.
Определено в:
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.
Определено в:
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.
Определено в:
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.
Определено в:
thenAcceptBothAsync в интерфейсе CompletionStage<T>
Параметры типа:
U — тип результата другого CompletionStage
Параметры:
other — другой CompletionStage
action — действие, которое нужно выполнить перед завершением возвращаемого CompletionStage
executor — исполнитель для асинхронного выполнения
Возвращает:
новый CompletionStage

runAfterBoth

public CompletableFuture<Void> runAfterBoth(CompletionStage<?> other, Runnable action)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который выполняет заданное действие после нормального завершения данного и другого указанного этапа. Правила обработки завершения с исключением см. в документации CompletionStage.
Определено в:
runAfterBoth в интерфейсе CompletionStage<T>
Параметры:
other — другой CompletionStage
action — действие, которое нужно выполнить перед завершением возвращаемого CompletionStage
Возвращает:
новый CompletionStage

runAfterBothAsync

public CompletableFuture<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который после нормального завершения данного и другого указанного этапа выполняет заданное действие с использованием стандартного средства асинхронного выполнения данного этапа. Правила обработки завершения с исключением см. в документации CompletionStage.
Определено в:
runAfterBothAsync в интерфейсе CompletionStage<T>
Параметры:
other — другой CompletionStage
action — действие, которое нужно выполнить перед завершением возвращаемого CompletionStage
Возвращает:
новый CompletionStage

runAfterBothAsync

public CompletableFuture<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action, Executor executor)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении этого и другого заданного этапа выполняет заданное действие с помощью предоставленного исполнителя. Правила обработки исключительного завершения см. в документации CompletionStage.
Определено в:
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.
Определено в:
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.
Определено в:
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.
Определено в:
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.
Определено в:
acceptEither в интерфейсе CompletionStage<T>
Параметры:
other — другой CompletionStage
action — действие, которое необходимо выполнить перед завершением возвращаемого CompletionStage
Возвращает:
новый CompletionStage

acceptEitherAsync

public CompletableFuture<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении этого или другого заданного этапа выполняется с использованием стандартного средства асинхронного выполнения этого этапа и соответствующим результатом в качестве аргумента переданного действия. Правила обработки исключительного завершения см. в документации CompletionStage.
Определено в:
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.
Определено в:
acceptEitherAsync в интерфейсе CompletionStage<T>
Параметры:
other — другой CompletionStage
action — действие, которое необходимо выполнить перед завершением возвращаемого CompletionStage
executor — исполнитель, используемый для асинхронного выполнения
Возвращает:
новый CompletionStage

runAfterEither

public CompletableFuture<Void> runAfterEither(CompletionStage<?> other, Runnable action)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении этого или другого заданного этапа выполняет заданное действие. Правила обработки исключительного завершения см. в документации CompletionStage.
Определено в:
runAfterEither в интерфейсе CompletionStage<T>
Параметры:
other — другой CompletionStage
action — действие, которое необходимо выполнить перед завершением возвращаемого CompletionStage
Возвращает:
новый CompletionStage

runAfterEitherAsync

public CompletableFuture<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении этого или другого заданного этапа выполняет заданное действие с использованием стандартного средства асинхронного выполнения этого этапа. Правила обработки исключительного завершения см. в документации CompletionStage.
Определено в:
runAfterEitherAsync в интерфейсе CompletionStage<T>
Параметры:
other — другой CompletionStage
action — действие, которое необходимо выполнить перед завершением возвращаемого CompletionStage
Возвращает:
новый CompletionStage

runAfterEitherAsync

public CompletableFuture<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action, Executor executor)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном завершении этого или другого заданного этапа выполняет заданное действие с помощью предоставленного исполнителя. Правила обработки исключительного завершения см. в документации CompletionStage.
Определено в:
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.

Определено в:
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.

Определено в:
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.

Определено в:
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, этот метод не предназначен для преобразования результатов завершения, поэтому переданное действие не должно выбрасывать исключение. Однако, если это произойдет, применяются следующие правила: если этот этап завершился нормально, но переданное действие выбрасывает исключение, возвращаемый этап завершается исключительным образом с исключением переданного действия. Если же этот этап завершился исключительным образом и переданное действие выбрасывает исключение, возвращаемый этап завершается исключительным образом с исключением этого этапа.

Определено в:
whenComplete в интерфейсе CompletionStage<T>
Параметры:
action — выполняемое действие
Возвращает:
новый CompletionStage

whenCompleteAsync

public CompletableFuture<T> whenCompleteAsync(BiConsumer<? super T, ? super Throwable> action)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage с тем же результатом или исключением, что и этот этап, который при завершении этого этапа выполняет заданное действие с использованием стандартного средства асинхронного выполнения этого этапа.

После завершения этого этапа заданное действие вызывается с результатом (или null, если результата нет) и исключением (или null, если исключения нет) этого этапа в качестве аргументов. Возвращаемый этап завершается после возврата действия.

В отличие от метода handleAsync, этот метод не предназначен для преобразования результатов завершения, поэтому переданное действие не должно выбрасывать исключение. Однако, если это произойдет, применяются следующие правила: если этот этап завершился нормально, но переданное действие выбрасывает исключение, возвращаемый этап завершается исключительным образом с исключением переданного действия. Если же этот этап завершился исключительным образом и переданное действие выбрасывает исключение, возвращаемый этап завершается исключительным образом с исключением этого этапа.

Определено в:
whenCompleteAsync в интерфейсе CompletionStage<T>
Параметры:
action — выполняемое действие
Возвращает:
новый CompletionStage

whenCompleteAsync

public CompletableFuture<T> whenCompleteAsync(BiConsumer<? super T, ? super Throwable> action, Executor executor)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage с тем же результатом или исключением, что и этот этап, который при завершении этого этапа выполняет заданное действие с использованием предоставленного Executor.

После завершения этого этапа заданное действие вызывается с результатом (или null, если результата нет) и исключением (или null, если исключения нет) этого этапа в качестве аргументов. Возвращаемый этап завершается после возврата действия.

В отличие от метода handleAsync, этот метод не предназначен для преобразования результатов завершения, поэтому переданное действие не должно выбрасывать исключение. Однако, если это произойдет, применяются следующие правила: если этот этап завершился нормально, но переданное действие выбрасывает исключение, возвращаемый этап завершается исключительным образом с исключением переданного действия. Если же этот этап завершился исключительным образом и переданное действие выбрасывает исключение, возвращаемый этап завершается исключительным образом с исключением этого этапа.

Определено в:
whenCompleteAsync в интерфейсе CompletionStage<T>
Параметры:
action — выполняемое действие
executor — исполнитель, используемый для асинхронного выполнения
Возвращает:
новый CompletionStage

handle

public <U> CompletableFuture<U> handle(BiFunction<? super T, Throwable, ? extends U> fn)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном или исключительном завершении этого этапа выполняется с результатом и исключением этого этапа в качестве аргументов переданной функции.

После завершения этого этапа заданная функция вызывается с результатом (или null, если результата нет) и исключением (или null, если исключения нет) этого этапа в качестве аргументов, а результат функции используется для завершения возвращаемого этапа.

Определено в:
handle в интерфейсе CompletionStage<T>
Параметры типа:
U — тип возвращаемого функцией значения
Параметры:
fn — функция для вычисления значения возвращаемого CompletionStage
Возвращает:
новый CompletionStage

handleAsync

public <U> CompletableFuture<U> handleAsync(BiFunction<? super T, Throwable, ? extends U> fn)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при нормальном или исключительном завершении этого этапа выполняется с использованием стандартного средства асинхронного выполнения этого этапа, а результат и исключение этого этапа передаются в качестве аргументов заданной функции.

После завершения этого этапа заданная функция вызывается с результатом (или null, если результата нет) и исключением (или null, если исключения нет) этого этапа в качестве аргументов, а результат функции используется для завершения возвращаемого этапа.

Определено в:
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, если исключения нет) этого этапа в качестве аргументов, а результат функции используется для завершения возвращаемого этапа.

Определено в:
handleAsync в интерфейсе CompletionStage<T>
Параметры типа:
U — тип возвращаемого функцией значения
Параметры:
fn — функция для вычисления значения возвращаемого CompletionStage
executor — исполнитель, используемый для асинхронного выполнения
Возвращает:
новый CompletionStage

toCompletableFuture

public CompletableFuture<T> toCompletableFuture()
Возвращает этот CompletableFuture.
Определено в:
toCompletableFuture в интерфейсе CompletionStage<T>
Возвращает:
этот CompletableFuture

exceptionally

public CompletableFuture<T> exceptionally(Function<Throwable, ? extends T> fn)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при исключительном завершении этого этапа выполняется с исключением этого этапа в качестве аргумента переданной функции. Если же этот этап завершается нормально, возвращаемый этап также завершается нормально с тем же значением.
Определено в:
exceptionally в интерфейсе CompletionStage<T>
Параметры:
fn — функция для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом
Возвращает:
новый CompletionStage

exceptionallyAsync

public CompletableFuture<T> exceptionallyAsync(Function<Throwable, ? extends T> fn)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при исключительном завершении этого этапа выполняется с исключением этого этапа в качестве аргумента переданной функции, используя стандартное средство асинхронного выполнения этого этапа. Если же этот этап завершается нормально, возвращаемый этап также завершается нормально с тем же значением.
Определено в:
exceptionallyAsync в интерфейсе CompletionStage<T>
Параметры:
fn — функция для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом
Возвращает:
новый CompletionStage
Начиная с версии:
12

exceptionallyAsync

public CompletableFuture<T> exceptionallyAsync(Function<Throwable, ? extends T> fn, Executor executor)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при исключительном завершении этого этапа выполняется с исключением этого этапа в качестве аргумента переданной функции, используя предоставленный Executor. Если же этот этап завершается нормально, возвращаемый этап также завершается нормально с тем же значением.
Определено в:
exceptionallyAsync в интерфейсе CompletionStage<T>
Параметры:
fn — функция для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом
executor — исполнитель, используемый для асинхронного выполнения
Возвращает:
новый CompletionStage
Начиная с версии:
12

exceptionallyCompose

public CompletableFuture<T> exceptionallyCompose(Function<Throwable, ? extends CompletionStage<T>> fn)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при исключительном завершении этого этапа компонуется с использованием результата применения переданной функции к исключению этого этапа.
Определено в:
exceptionallyCompose в интерфейсе CompletionStage<T>
Параметры:
fn — функция для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом
Возвращает:
новый CompletionStage
Начиная с версии:
12

exceptionallyComposeAsync

public CompletableFuture<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при исключительном завершении этого этапа компонуется с использованием результата применения переданной функции к исключению этого этапа и стандартного средства асинхронного выполнения этого этапа.
Определено в:
exceptionallyComposeAsync в интерфейсе CompletionStage<T>
Параметры:
fn — функция для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом
Возвращает:
новый CompletionStage
Начиная с версии:
12

exceptionallyComposeAsync

public CompletableFuture<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn, Executor executor)
Описание скопировано из интерфейса: CompletionStage
Возвращает новый CompletionStage, который при аварийном завершении этой стадии композиционно формируется с использованием результата применения переданной функции к исключению этой стадии и переданного Executor.
Указано в:
exceptionallyComposeAsync в интерфейсе CompletionStage<T>
Параметры:
fn - функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился аварийно
executor - исполнитель, используемый для асинхронного выполнения
Возвращает:
новый CompletionStage
Начиная с:
12

allOf

public static CompletableFuture<Void> allOf(CompletableFuture<?>... cfs)
Возвращает новый CompletableFuture, который завершается, когда завершаются все переданные CompletableFuture. Если любой из переданных CompletableFuture завершается аварийно, возвращаемый CompletableFuture также завершается аварийно, с CompletionException, содержащим это исключение в качестве причины. В противном случае результаты переданных CompletableFuture, если они есть, не отражаются в возвращаемом CompletableFuture, но их можно получить, проверив их по отдельности. Если CompletableFuture не переданы, возвращает CompletableFuture, завершённый со значением null.

Этот метод, в частности, позволяет дождаться завершения набора независимых CompletableFuture перед продолжением выполнения программы, например: CompletableFuture.allOf(c1, c2, c3).join();.

Параметры:
cfs - CompletableFuture
Возвращает:
новый CompletableFuture, который завершается, когда завершаются все переданные CompletableFuture
Выбрасывает:
NullPointerException - если массив или любой из его элементов равен null

anyOf

public static CompletableFuture<Object> anyOf(CompletableFuture<?>... cfs)
Возвращает новый CompletableFuture, который завершается при завершении любого из переданных CompletableFuture с тем же результатом. Если он завершается аварийно, возвращаемый CompletableFuture также завершается аварийно, с CompletionException, содержащим это исключение в качестве причины. Если CompletableFuture не переданы, возвращает незавершённый CompletableFuture.
Параметры:
cfs - CompletableFuture
Возвращает:
новый CompletableFuture, который завершается с результатом или исключением любого из переданных CompletableFuture при завершении одного из них
Выбрасывает:
NullPointerException - если массив или любой из его элементов равен null

cancel

public boolean cancel(boolean mayInterruptIfRunning)
Если этот CompletableFuture ещё не завершён, завершает его с CancellationException. Зависимые CompletableFuture, которые ещё не завершены, также завершатся аварийно с CompletionException, причиной которого является этот CancellationException.
Указано в:
cancel в интерфейсе Future<T>
Параметры:
mayInterruptIfRunning - это значение не влияет на данную реализацию, поскольку прерывания не используются для управления обработкой.
Возвращает:
true, если эта задача теперь отменена

isCancelled

public boolean isCancelled()
Возвращает true, если этот CompletableFuture был отменён до нормального завершения.
Указано в:
isCancelled в интерфейсе Future<T>
Возвращает:
true, если этот CompletableFuture был отменён до нормального завершения

isCompletedExceptionally

public boolean isCompletedExceptionally()
Возвращает true, если этот CompletableFuture завершился аварийно любым способом. Возможные причины включают отмену, явный вызов completeExceptionally и внезапное завершение действия CompletionStage.
Возвращает:
true, если этот CompletableFuture завершился аварийно

state

public Future.State state()
Описание скопировано из интерфейса: Future
Возвращает состояние вычисления.
Указано в:
state в интерфейсе Future<T>
Возвращает:
состояние вычисления
Начиная с:
19

obtrudeValue

public void obtrudeValue(T value)
Принудительно устанавливает или сбрасывает значение, возвращаемое впоследствии методом get() и связанными методами, независимо от того, завершён ли объект. Этот метод предназначен только для использования при восстановлении после ошибок; даже в таких ситуациях он может привести к тому, что выполняющиеся зависимые операции завершатся с ранее установленными, а не перезаписанными результатами.
Параметры:
value - значение завершения

obtrudeException

public void obtrudeException(Throwable ex)
Принудительно вызывает выбрасывание переданного исключения при последующих вызовах метода get() и связанных методов, независимо от того, завершён ли объект. Этот метод предназначен только для использования при восстановлении после ошибок; даже в таких ситуациях он может привести к тому, что выполняющиеся зависимые операции завершатся с ранее установленными, а не перезаписанными результатами.
Параметры:
ex - исключение
Выбрасывает:
NullPointerException - если исключение равно null

getNumberOfDependents

public int getNumberOfDependents()
Возвращает приблизительное количество CompletableFuture, завершение которых ожидает завершения этого CompletableFuture. Этот метод предназначен для мониторинга состояния системы, а не для управления синхронизацией.
Возвращает:
количество зависимых CompletableFuture

toString

public String toString()
Возвращает строку, идентифицирующую этот CompletableFuture и его состояние завершения. Состояние в квадратных скобках содержит строку "Completed normally" или строку "Completed exceptionally", либо строку "Not completed", за которой следует количество CompletableFuture, зависящих от его завершения, если таковые имеются.
Переопределяет:
toString в классе Object
Возвращает:
строку, идентифицирующую этот CompletableFuture и его состояние

newIncompleteFuture

public <U> CompletableFuture<U> newIncompleteFuture()
Возвращает новый незавершённый CompletableFuture типа, который будет возвращён методом CompletionStage. Подклассам обычно следует переопределять этот метод, чтобы возвращать экземпляр того же класса, что и этот 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 завершается аварийно с CompletionException, причиной которого является это исключение. Поведение эквивалентно thenApply(x -> x). Этот метод может пригодиться для «защитного копирования», позволяя клиентам не завершать объект самостоятельно и при этом назначать зависимые действия.
Возвращает:
новый CompletableFuture
Начиная с:
9

minimalCompletionStage

public CompletionStage<T> minimalCompletionStage()
Возвращает новый CompletionStage, который при нормальном завершении этого CompletableFuture нормально завершается с тем же значением и не может быть завершён независимо или иным образом использован способами, не предусмотренными методами интерфейса CompletionStage. Если этот CompletableFuture завершается аварийно, возвращаемый CompletionStage завершается аварийно с CompletionException, причиной которого является это исключение.

Если подкласс не переопределяет этот метод, из минимального CompletionStage можно получить новый неминимальный CompletableFuture со всеми доступными методами с помощью toCompletableFuture(). Например, завершения минимальной стадии можно дождаться следующим образом:

 minimalStage.toCompletableFuture().join(); 
Возвращает:
новый CompletionStage
Начиная с:
9

completeAsync

public CompletableFuture<T> completeAsync(Supplier<? extends T> supplier, Executor executor)
Завершает этот CompletableFuture результатом функции Supplier, вызванной в асинхронной задаче с использованием переданного исполнителя.
Параметры:
supplier - функция, возвращающая значение, которым следует завершить этот CompletableFuture
executor - исполнитель, используемый для асинхронного выполнения
Возвращает:
этот CompletableFuture
Начиная с:
9

completeAsync

public CompletableFuture<T> completeAsync(Supplier<? extends T> supplier)
Завершает этот CompletableFuture результатом функции Supplier, вызванной в асинхронной задаче с использованием исполнителя по умолчанию.
Параметры:
supplier - функция, возвращающая значение, которым следует завершить этот CompletableFuture
Возвращает:
этот CompletableFuture
Начиная с:
9

orTimeout

public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
Завершает этот CompletableFuture аварийно с TimeoutException, если он не был завершён иным образом до истечения заданного времени ожидания.
Параметры:
timeout - время ожидания перед аварийным завершением с TimeoutException, в единицах unit
unit - TimeUnit, определяющий, как интерпретировать параметр timeout
Возвращает:
этот CompletableFuture
Начиная с:
9

completeOnTimeout

public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
Завершает этот CompletableFuture заданным значением, если он не был завершён иным образом до истечения заданного времени ожидания.
Параметры:
value - значение, используемое по истечении времени ожидания
timeout - время ожидания перед нормальным завершением с заданным значением, в единицах unit
unit - TimeUnit, определяющий, как интерпретировать параметр timeout
Возвращает:
этот CompletableFuture
Начиная с:
9

delayedExecutor

public static Executor delayedExecutor(long delay, TimeUnit unit, Executor executor)
Возвращает новый Executor, который передаёт задачу указанному базовому исполнителю после заданной задержки (или без задержки, если она неположительна). Отсчёт каждой задержки начинается при вызове метода execute возвращённого исполнителя.
Параметры:
delay - длительность задержки в единицах unit
unit - TimeUnit, определяющий, как интерпретировать параметр delay
executor - базовый исполнитель
Возвращает:
новый исполнитель с задержкой
Начиная с:
9

delayedExecutor

public static Executor delayedExecutor(long delay, TimeUnit unit)
Возвращает новый Executor, который передаёт задачу исполнителю по умолчанию после заданной задержки (или без задержки, если она неположительна). Отсчёт каждой задержки начинается при вызове метода execute возвращённого исполнителя.
Параметры:
delay - длительность задержки в единицах unit
unit - TimeUnit, определяющий, как интерпретировать параметр delay
Возвращает:
новый исполнитель с задержкой
Начиная с:
9

completedStage

public static <U> CompletionStage<U> completedStage(U value)
Возвращает новый CompletionStage, уже завершённый с заданным значением и поддерживающий только методы интерфейса CompletionStage.
Параметры типа:
U - тип значения
Параметры:
value - значение
Возвращает:
завершённый CompletionStage
Начиная с:
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 - исключение
Возвращает:
аварийно завершённый CompletionStage
Начиная с:
9

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе документации Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/CompletableFuture.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API