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

Все известные реализующие классы:
CompletableFuture
public interface CompletionStage<T>

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

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

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

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

Все методы придерживаются вышеуказанных спецификаций запуска, выполнения и исключительного завершения (которые не повторяются в отдельных спецификациях методов). Кроме того, хотя аргументы, используемые для передачи результата завершения (то есть для параметров типа T) для методов, принимающих их, могут быть null, передача null для любого другого параметра приведет к тому, что будет выброшено исключение 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, которая, когда эта фаза завершится с исключением, выполняется с исключением этой фазы в качестве аргумента для предоставленной функции.

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

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

<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, возвращенная заданной функцией, выполненная с использованием предоставленного исполнителя.

CompletionStage<Void> thenRun​(Runnable action)

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

CompletionStage<Void> thenRunAsync​(Runnable action)

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

CompletionStage<Void> thenRunAsync​(Runnable action, Executor executor)

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

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

Методы

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

Параметры типа:
U - тип результата другого CompletionStage
Параметры:
other - другой CompletionStage
action - действие, выполняемое перед завершением возвращаемого CompletionStage
executor - 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 - используемый 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 - используемый 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 - используемый 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 - используемый 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, возвращаемый заданной функцией, выполняемой с помощью предоставленного исполнителя.

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

Параметры:
action - действие для выполнения
Возвращает:
новый CompletionStage

whenCompleteAsync

CompletionStage<T> whenCompleteAsync(BiConsumer<? super T,​? super Throwable> action)

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

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

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

Параметры:
action - действие для выполнения
Возвращает:
новый CompletionStage

whenCompleteAsync

CompletionStage<T> whenCompleteAsync(BiConsumer<? super T,​? super Throwable> action,
                                     Executor executor)

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

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

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

Параметры:
action - действие для выполнения
executor - исполнитель для использования в асинхронном выполнении
Возвращает:
новый CompletionStage

exceptionally

CompletionStage<T> exceptionally(Function<Throwable,​? extends T> fn)

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

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

toCompletableFuture

CompletableFuture<T> toCompletableFuture()

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

Возвращает:
CompletableFuture

© 1993, 2020, 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/11/docs/api/java.base/java/util/concurrent/CompletionStage.html

Spec-Zone .ru
спецификации, руководства, описания, API