Spec-Zone.ru › OpenJDK 24

Интерфейс CompletionStage<T>

Параметры типа:
T - тип значений, производимых или потребляемых этапом
Все известные реализующие классы:
CompletableFuture
public interface CompletionStage<T>
Этап, возможно, асинхронного вычисления, который выполняет действие или вычисляет значение, когда завершается другой CompletionStage. Этап завершается по завершении своего вычисления, но это, в свою очередь, может инициировать другие зависимые этапы. Функциональность, определенная в этом интерфейсе, имеет всего несколько основных форм, которые расширяются до большего набора методов для охвата различных стилей использования:
  • Вычисление, выполняемое этапом, может быть выражено как функция, потребитель или Runnable (используя методы с именами, включающими apply, accept или run соответственно), в зависимости от того, требуются ли аргументы и/или производятся ли результаты. Например:
     
     stage.thenApply(x -> square(x))
          .thenAccept(x -> System.out.print(x))
          .thenRun(() -> System.out.println());
    Дополнительная форма (compose) позволяет создавать цепочки вычислений из функций, возвращающих этапы завершения.

    Любой аргумент вычисления этапа является результатом вычисления запускающего этапа.

  • Выполнение одного этапа может быть инициировано завершением одного этапа, или двух этапов, или любого из двух этапов. Зависимости от одного этапа организованы с помощью методов с префиксом then. Те, которые инициируются завершением обоих двух этапов, могут объединить свои результаты или эффекты, используя соответствующие именованные методы. Те, которые инициируются любым из двух этапов, не гарантируют, какой из результатов или эффектов будет использоваться для вычисления зависимого этапа.
  • Зависимости между этапами управляют инициированием вычислений, но не гарантируют никакой конкретной последовательности. Кроме того, выполнение вычислений нового этапа может быть организовано тремя способами: по умолчанию, по умолчанию асинхронное выполнение (с помощью методов с суффиксом async, использующих стандартные асинхронные средства этапа), или пользовательское (через предоставленный Executor). Свойства выполнения режимов по умолчанию и async определяются реализациями CompletionStage, а не этим интерфейсом. Методы с явными аргументами Executor могут иметь произвольные свойства выполнения и могут даже не поддерживать одновременное выполнение, но организованы для обработки таким образом, чтобы учитывать асинхронность.
  • Две формы методов (handle и whenComplete) поддерживают безусловное вычисление, независимо от того, завершился ли запускающий этап нормально или с исключением. Метод exceptionally поддерживает вычисление только при завершении запускающего этапа с исключением, вычисляя заменяющий результат, аналогично ключевому слову java catch. Во всех остальных случаях, если вычисление этапа завершается внезапно с (непроверенным) исключением или ошибкой, все зависимые этапы, требующие его завершения, также завершаются с исключением с CompletionException, содержащим исключение в качестве причины. Если этап зависит от обоих двух этапов, и оба завершаются с исключением, то CompletionException может соответствовать любому из этих исключений. Если этап зависит от любого из двух других, и только один из них завершается с исключением, не делается никаких гарантий о том, завершается ли зависимый этап нормально или с исключением. В случае метода whenComplete, когда предоставленное действие само сталкивается с исключением, этап завершается с этим исключением, если только исходный этап также не завершился с исключением, в этом случае предпочтительно и распространяется исключительное завершение исходного этапа на зависимый этап.

Все методы соответствуют вышеуказанным спецификациям запуска, выполнения и исключительного завершения (которые не повторяются в отдельных спецификациях методов). Кроме того, хотя аргументы, используемые для передачи результата завершения (то есть, для параметров типа T) для методов, принимающих их, могут быть нулевыми, передача нулевого значения для любого другого параметра приведет к выбрасыванию NullPointerException.

Форма метода handle является наиболее общим способом создания этапа продолжения, безусловно выполняющего вычисление, которому передаются результат и исключение (если таковое имеется) запускающего CompletionStage, и вычисляется произвольный результат. Метод whenComplete аналогичен, но сохраняет результат запускающего этапа вместо вычисления нового. Поскольку нормальный результат этапа может быть null, оба метода должны иметь структурированное таким образом вычисление:

(result, exception) -> {
   if (exception == null) {
     // triggering stage completed normally
   } else {
     // triggering stage completed exceptionally
   }
 }

Этот интерфейс не определяет методы для первоначального создания, принудительного нормального или исключительного завершения, проверки состояния или результатов завершения или ожидания завершения этапа. Реализации CompletionStage могут предоставлять средства для достижения таких эффектов, если это уместно. Метод toCompletableFuture() обеспечивает взаимодействие между различными реализациями этого интерфейса, предоставляя общий тип преобразования.

С момента:
1.8

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

Модификатор и тип Метод Описание
CompletionStage<Void> acceptEither(CompletionStage<? extends T> other, Consumer<? super T> action)
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с соответствующим результатом в качестве аргумента для предоставленного действия.
CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action)
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с соответствующим результатом в качестве аргумента для предоставленного действия.
CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action, Executor executor)
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с использованием предоставленного исполнителя, с соответствующим результатом в качестве аргумента для предоставленного действия.
<U> CompletionStage<U> applyToEither(CompletionStage<? extends T> other, Function<? super T, U> fn)
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с соответствующим результатом в качестве аргумента для предоставленной функции.
<U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T, U> fn)
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с соответствующим результатом в качестве аргумента для предоставленной функции.
<U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T, U> fn, Executor executor)
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с использованием предоставленного исполнителя, с соответствующим результатом в качестве аргумента для предоставленной функции.
CompletionStage<T> exceptionally(Function<Throwable, ? extends T> fn)
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, выполняется с исключением этой стадии в качестве аргумента для предоставленной функции.
default CompletionStage<T> exceptionallyAsync(Function<Throwable, ? extends T> fn)
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, выполняется с исключением этой стадии в качестве аргумента для предоставленной функции, используя стандартный асинхронный механизм выполнения этой стадии.
default CompletionStage<T> exceptionallyAsync(Function<Throwable, ? extends T> fn, Executor executor)
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, выполняется с исключением этой стадии в качестве аргумента для предоставленной функции, используя предоставленный Executor.
default CompletionStage<T> exceptionallyCompose(Function<Throwable, ? extends CompletionStage<T>> fn)
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, компонуется с использованием результатов предоставленной функции, применённой к исключению этой стадии.
default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn)
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, компонуется с использованием результатов предоставленной функции, применённой к исключению этой стадии, используя стандартный асинхронный механизм выполнения этой стадии.
default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn, Executor executor)
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, компонуется с использованием результатов предоставленной функции, применённой к исключению этой стадии, используя предоставленный Executor.
<U> CompletionStage<U> handle(BiFunction<? super T, Throwable, ? extends U> fn)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально или с ошибкой, выполняется с результатом и исключением этой стадии в качестве аргументов для предоставленной функции.
<U> CompletionStage<U> handleAsync(BiFunction<? super T, Throwable, ? extends U> fn)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально или с ошибкой, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с результатом и исключением этой стадии в качестве аргументов для предоставленной функции.
<U> CompletionStage<U> handleAsync(BiFunction<? super T, Throwable, ? extends U> fn, Executor executor)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально или с ошибкой, выполняется с использованием предоставленного исполнителя, с результатом и исключением этой стадии в качестве аргументов для предоставленной функции.
CompletionStage<Void> runAfterBoth(CompletionStage<?> other, Runnable action)
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняет предоставленное действие.
CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action)
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняет предоставленное действие с использованием стандартного асинхронного механизма выполнения этой стадии.
CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action, Executor executor)
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняет предоставленное действие с использованием предоставленного исполнителя.
CompletionStage<Void> runAfterEither(CompletionStage<?> other, Runnable action)
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняет предоставленное действие.
CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action)
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняет предоставленное действие с использованием стандартного асинхронного механизма выполнения этой стадии.
CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action, Executor executor)
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняет предоставленное действие с использованием предоставленного исполнителя.
CompletionStage<Void> thenAccept(Consumer<? super T> action)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с результатом этой стадии в качестве аргумента для предоставленного действия.
CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с результатом этой стадии в качестве аргумента для предоставленного действия.
CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action, Executor executor)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием предоставленного Executor, с результатом этой стадии в качестве аргумента для предоставленного действия.
<U> CompletionStage<Void> thenAcceptBoth(CompletionStage<? extends U> other, BiConsumer<? super T, ? super U> action)
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с двумя результатами в качестве аргументов для предоставленного действия.
<U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T, ? super U> action)
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с двумя результатами в качестве аргументов для предоставленного действия.
<U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T, ? super U> action, Executor executor)
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с использованием предоставленного исполнителя, с двумя результатами в качестве аргументов для предоставленного действия.
<U> CompletionStage<U> thenApply(Function<? super T, ? extends U> fn)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с результатом этой стадии в качестве аргумента для предоставленной функции.
<U> CompletionStage<U> thenApplyAsync(Function<? super T, ? extends U> fn)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с результатом этой стадии в качестве аргумента для предоставленной функции.
<U> CompletionStage<U> thenApplyAsync(Function<? super T, ? extends U> fn, Executor executor)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием предоставленного Executor, с результатом этой стадии в качестве аргумента для предоставленной функции.
<U,V> CompletionStage<V> thenCombine(CompletionStage<? extends U> other, BiFunction<? super T, ? super U, ? extends V> fn)
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с двумя результатами в качестве аргументов для предоставленной функции.
<U,V> CompletionStage<V> thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T, ? super U, ? extends V> fn)
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с двумя результатами в качестве аргументов для предоставленной функции.
<U,V> CompletionStage<V> thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T, ? super U, ? extends V> fn, Executor executor)
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с использованием предоставленного исполнителя, с двумя результатами в качестве аргументов для предоставленной функции.
<U> CompletionStage<U> thenCompose(Function<? super T, ? extends CompletionStage<U>> fn)
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый предоставленной функцией.
<U> CompletionStage<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn)
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый предоставленной функцией, выполненной с использованием стандартного асинхронного механизма выполнения этой стадии.
<U> CompletionStage<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn, Executor executor)
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый предоставленной функцией, выполненной с использованием предоставленного Executor.
CompletionStage<Void> thenRun(Runnable action)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняет предоставленное действие.
CompletionStage<Void> thenRunAsync(Runnable action)
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняет предоставленное действие с использованием стандартного асинхронного механизма выполнения этой стадии.
CompletionStage<Void> thenRunAsync(Runnable action, Executor executor)
Возвращает новую CompletionStage, которая, когда эта фаза завершится нормально, выполняет заданный метод с использованием предоставленного Executor.
CompletableFuture<T> toCompletableFuture()
Возвращает CompletableFuture, сохраняя те же свойства завершения, что и у этой фазы.
CompletionStage<T> whenComplete(BiConsumer<? super T, ? super Throwable> action)
Возвращает новую CompletionStage с тем же результатом или исключением, что и у этой фазы, которая выполняет заданный метод, когда эта фаза завершается.
CompletionStage<T> whenCompleteAsync(BiConsumer<? super T, ? super Throwable> action)
Возвращает новую CompletionStage с тем же результатом или исключением, что и у этой фазы, которая выполняет заданный метод, используя стандартное асинхронное средство выполнения этой фазы, когда эта фаза завершается.
CompletionStage<T> whenCompleteAsync(BiConsumer<? super T, ? super Throwable> action, Executor executor)
Возвращает новую CompletionStage с тем же результатом или исключением, что и у этой фазы, которая выполняет заданный метод с использованием предоставленного Executor, когда эта фаза завершается.

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

thenApply

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

Этот метод аналогичен Optional.map и Stream.map.

См. документацию CompletionStage для правил, касающихся исключительного завершения.

Параметры типа:
U - тип возвращаемого значения функции
Параметры:
fn - функция, используемая для вычисления значения возвращаемой CompletionStage
Возвращаемое значение:
новая CompletionStage

thenApplyAsync

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

thenApplyAsync

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

thenAccept

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

thenAcceptAsync

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

thenAcceptAsync

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

thenRun

CompletionStage<Void> thenRun(Runnable action)
Возвращает новую CompletionStage, которая при нормальном завершении текущей стадии выполняет заданное действие. См. документацию CompletionStage для правил, касающихся исключительного завершения.
Параметры:
action - действие, выполняемое перед завершением возвращаемой CompletionStage
Возвращаемое значение:
новая CompletionStage

thenRunAsync

CompletionStage<Void> thenRunAsync(Runnable action)
Возвращает новую CompletionStage, которая при нормальном завершении текущей стадии выполняет заданное действие с использованием стандартных асинхронных средств текущей стадии. См. документацию CompletionStage для правил, касающихся исключительного завершения.
Параметры:
action - действие, выполняемое перед завершением возвращаемой CompletionStage
Возвращаемое значение:
новая CompletionStage

thenRunAsync

CompletionStage<Void> thenRunAsync(Runnable action, Executor executor)
Возвращает новую CompletionStage, которая при нормальном завершении текущей стадии выполняет заданное действие с использованием предоставленного Executor. См. документацию CompletionStage для правил, касающихся исключительного завершения.
Параметры:
action - действие, выполняемое перед завершением возвращаемой CompletionStage
executor - executor для использования в асинхронном выполнении
Возвращаемое значение:
новая CompletionStage

thenCombine

<U,V> CompletionStage<V> thenCombine(CompletionStage<? extends U> other, BiFunction<? super T, ? super U, ? extends V> fn)
Возвращает новую CompletionStage, которая при нормальном завершении текущей и другой заданной стадии выполняется с двумя результатами в качестве аргументов предоставленной функции. См. документацию CompletionStage для правил, касающихся исключительного завершения.
Параметры типа:
U - тип результата другой CompletionStage
V - тип возвращаемого значения функции
Параметры:
other - другая CompletionStage
fn - функция, используемая для вычисления значения возвращаемой CompletionStage
Возвращаемое значение:
новая CompletionStage

thenCombineAsync

<U,V> CompletionStage<V> thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T, ? super U, ? extends V> fn)
Возвращает новую CompletionStage, которая при нормальном завершении текущей и другой заданной стадии выполняется с использованием стандартных асинхронных средств текущей стадии, с двумя результатами в качестве аргументов предоставленной функции. См. документацию CompletionStage для правил, касающихся исключительного завершения.
Параметры типа:
U - тип результата другой CompletionStage
V - тип возвращаемого значения функции
Параметры:
other - другая CompletionStage
fn - функция, используемая для вычисления значения возвращаемой CompletionStage
Возвращаемое значение:
новая CompletionStage

thenCombineAsync

<U,V> CompletionStage<V> thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T, ? super U, ? extends V> fn, Executor executor)
Возвращает новую CompletionStage, которая при нормальном завершении текущей и другой заданной стадии выполняется с использованием предоставленного executor, с двумя результатами в качестве аргументов предоставленной функции. См. документацию CompletionStage для правил, касающихся исключительного завершения.
Параметры типа:
U - тип результата другой CompletionStage
V - тип возвращаемого значения функции
Параметры:
other - другая CompletionStage
fn - функция, используемая для вычисления значения возвращаемой CompletionStage
executor - executor для использования в асинхронном выполнении
Возвращаемое значение:
новая CompletionStage

thenAcceptBoth

<U> CompletionStage<Void> thenAcceptBoth(CompletionStage<? extends U> other, BiConsumer<? super T, ? super U> action)
Возвращает новую CompletionStage, которая, когда этот и другой заданный этап оба завершатся нормально, выполняется с двумя результатами в качестве аргументов для предоставленного действия. См. документацию CompletionStage для правил, охватывающих исключительное завершение.
Параметры типа:
U - тип результата другого CompletionStage
Параметры:
other - другой CompletionStage
action - действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage
Возвращает:
новая CompletionStage

thenAcceptBothAsync

<U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T, ? super U> action)
Возвращает новую CompletionStage, которая, когда этот и другой заданный этап оба завершатся нормально, выполняется с использованием стандартного асинхронного механизма этого этапа, с двумя результатами в качестве аргументов для предоставленного действия. См. документацию CompletionStage для правил, охватывающих исключительное завершение.
Параметры типа:
U - тип результата другого CompletionStage
Параметры:
other - другой CompletionStage
action - действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage
Возвращает:
новая CompletionStage

thenAcceptBothAsync

<U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T, ? super U> action, Executor executor)
Возвращает новую CompletionStage, которая, когда этот и другой заданный этап оба завершатся нормально, выполняется с использованием предоставленного исполнителя, с двумя результатами в качестве аргументов для предоставленного действия. См. документацию CompletionStage для правил, охватывающих исключительное завершение.
Параметры типа:
U - тип результата другого CompletionStage
Параметры:
other - другой CompletionStage
action - действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage
executor - исполнитель для использования в асинхронном выполнении
Возвращает:
новая CompletionStage

runAfterBoth

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

runAfterBothAsync

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

runAfterBothAsync

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

applyToEither

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

applyToEitherAsync

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

applyToEitherAsync

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

acceptEither

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

acceptEitherAsync

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

acceptEitherAsync

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

runAfterEither

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

runAfterEitherAsync

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

runAfterEitherAsync

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

thenCompose

<U> CompletionStage<U> thenCompose(Function<? super T, ? extends CompletionStage<U>> fn)
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый данной функцией.

Когда этот этап завершается нормально, заданная функция вызывается с результатом этого этапа в качестве аргумента, возвращая другой CompletionStage. Когда этот этап завершается нормально, CompletionStage, возвращаемый этим методом, завершается тем же значением.

Для обеспечения прогресса предоставленная функция должна организовать окончательное завершение своего результата.

Этот метод аналогичен Optional.flatMap и Stream.flatMap.

См. документацию CompletionStage для правил, охватывающих исключительное завершение.

Параметры типа:
U - тип результата возвращаемого CompletionStage
Параметры:
fn - функция, используемая для вычисления другого CompletionStage
Возвращает:
новый CompletionStage

thenComposeAsync

<U> CompletionStage<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn)
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый данной функцией, выполненный с использованием стандартного средства асинхронного выполнения этого этапа.

Когда этот этап завершается нормально, заданная функция вызывается с результатом этого этапа в качестве аргумента, возвращая другой CompletionStage. Когда этот этап завершается нормально, CompletionStage, возвращаемый этим методом, завершается тем же значением.

Для обеспечения прогресса предоставленная функция должна организовать окончательное завершение своего результата.

См. документацию CompletionStage для правил, охватывающих исключительное завершение.

Параметры типа:
U - тип результата возвращаемого CompletionStage
Параметры:
fn - функция, используемая для вычисления другого CompletionStage
Возвращает:
новый CompletionStage

thenComposeAsync

<U> CompletionStage<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn, Executor executor)
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый данной функцией, выполненный с использованием предоставленного Executor.

Когда этот этап завершается нормально, заданная функция вызывается с результатом этого этапа в качестве аргумента, возвращая другой CompletionStage. Когда этот этап завершается нормально, CompletionStage, возвращаемый этим методом, завершается тем же значением.

Для обеспечения прогресса предоставленная функция должна организовать окончательное завершение своего результата.

См. документацию CompletionStage для правил, охватывающих исключительное завершение.

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

handle

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

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

Параметры типа:
U - тип возвращаемого значения функции
Параметры:
fn - функция, используемая для вычисления значения возвращаемого CompletionStage
Возвращает:
новый CompletionStage

handleAsync

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

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

Параметры типа:
U - тип возвращаемого значения функции
Параметры:
fn - функция, используемая для вычисления значения возвращаемого CompletionStage
Возвращает:
новый CompletionStage

handleAsync

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

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

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

whenComplete

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

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

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

Parameters:
action - действие, которое нужно выполнить
Returns:
новый CompletionStage

whenCompleteAsync

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

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

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

Parameters:
action - действие, которое нужно выполнить
Returns:
новый CompletionStage

whenCompleteAsync

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

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

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

Parameters:
action - действие, которое нужно выполнить
executor - executor для асинхронного выполнения
Returns:
новый CompletionStage

exceptionally

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

exceptionallyAsync

default CompletionStage<T> exceptionallyAsync(Function<Throwable, ? extends T> fn)
Возвращает новый CompletionStage, который, при завершении этого этапа с исключением, выполняется с исключением этого этапа в качестве аргумента для предоставленной функции, используя стандартную асинхронную инфраструктуру этого этапа. В противном случае, если этот этап завершается нормально, то возвращаемый этап также завершается нормально с тем же значением.
Implementation Requirements:
Реализация по умолчанию вызывает handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>), передавая в handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>) при исключении, а затем thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>) для результата.
Parameters:
fn - функция, используемая для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился с исключением
Returns:
новый CompletionStage
Since:
12

exceptionallyAsync

default CompletionStage<T> exceptionallyAsync(Function<Throwable, ? extends T> fn, Executor executor)
Возвращает новый CompletionStage, который, при завершении этого этапа с исключением, выполняется с исключением этого этапа в качестве аргумента для предоставленной функции, используя предоставленный Executor. В противном случае, если этот этап завершается нормально, то возвращаемый этап также завершается нормально с тем же значением.
Implementation Requirements:
Реализация по умолчанию вызывает handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>), передавая в handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>) при исключении, а затем thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>) для результата.
Parameters:
fn - функция, используемая для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился с исключением
executor - executor для асинхронного выполнения
Returns:
новый CompletionStage
Since:
12

exceptionallyCompose

default CompletionStage<T> exceptionallyCompose(Function<Throwable, ? extends CompletionStage<T>> fn)
Возвращает новый CompletionStage, который, при завершении этого этапа с исключением, комбинируется с использованием результатов предоставленной функции, применённой к исключению этого этапа.
Implementation Requirements:
Реализация по умолчанию вызывает handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>), вызывая заданную функцию при исключении, а затем thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>) для результата.
Parameters:
fn - функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился с исключением
Returns:
новый CompletionStage
Since:
12

exceptionallyComposeAsync

default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn)
Возвращает новый CompletionStage, который, при завершении этого этапа с исключением, комбинируется с использованием результатов предоставленной функции, применённой к исключению этого этапа, используя стандартную асинхронную инфраструктуру этого этапа.
Implementation Requirements:
Реализация по умолчанию вызывает handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>), передавая в handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>) при исключении, а затем thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>) для результата.
Parameters:
fn - функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился с исключением
Returns:
новый CompletionStage
Since:
12

exceptionallyComposeAsync

default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn, Executor executor)
Возвращает новый CompletionStage, который, при завершении этого этапа с исключением, комбинируется с использованием результатов предоставленной функции, применённой к исключению этого этапа, используя предоставленный Executor.
Implementation Requirements:
Реализация по умолчанию вызывает handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>), передавая в handleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>) при исключении, а затем thenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>) для результата.
Parameters:
fn - функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился с исключением
executor - executor для асинхронного выполнения
Returns:
новый CompletionStage
Since:
12

toCompletableFuture

CompletableFuture<T> toCompletableFuture()
Возвращает CompletableFuture, сохраняющий те же свойства завершения, что и этот этап. Если этот этап уже является CompletableFuture, этот метод может вернуть сам этот этап. В противном случае, вызов этого метода может быть эквивалентен по эффекту thenApply(x -> x), но возвращая экземпляр типа CompletableFuture.
Returns:
CompletableFuture

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/CompletionStage.html

Spec-Zone.ru

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