Spec-Zone.ru › OpenJDK 25

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

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

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

  • Выполнение одного этапа может запускаться после завершения одного этапа, обоих из двух этапов или любого из двух этапов. Зависимости от одного этапа задаются с помощью методов с префиксом then. Методы, запускаемые после завершения обоих этапов, могут объединять их результаты или эффекты с помощью методов с соответствующими именами. Методы, запускаемые после завершения любого из двух этапов, не дают гарантий относительно того, какой из результатов или эффектов будет использован при вычислении зависимого этапа.
  • Зависимости между этапами управляют запуском вычислений, но не гарантируют никакого определённого порядка. Кроме того, выполнение вычислений нового этапа может быть организовано одним из трёх способов: выполнение по умолчанию, асинхронное выполнение по умолчанию (с использованием методов с суффиксом async, которые задействуют средство асинхронного выполнения этапа по умолчанию) или пользовательское выполнение (с помощью переданного Executor). Свойства выполнения в режимах по умолчанию и асинхронном режиме определяются реализациями 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, который выполняет переданную функцию с исключением этого этапа в качестве аргумента, когда этот этап завершается с исключением.
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 — исполнитель для асинхронного выполнения
Возвращает:
новый 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 — исполнитель для асинхронного выполнения
Возвращает:
новый 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 — исполнитель для асинхронного выполнения
Возвращает:
новый 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, который выполняется, когда этот и другой указанный этап завершаются нормально, с использованием переданного исполнителя и с двумя результатами в качестве аргументов переданной функции. Правила обработки исключительного завершения см. в документации CompletionStage.
Параметры типа:
U — тип результата другого CompletionStage
V — тип возвращаемого значения функции
Параметры:
other — другой CompletionStage
fn — функция, используемая для вычисления значения возвращаемого CompletionStage
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, этот метод не предназначен для преобразования результатов завершения, поэтому указанное действие не должно выбрасывать исключение. Однако, если это произойдёт, применяются следующие правила: если эта стадия завершилась нормально, но указанное действие выбрасывает исключение, возвращаемая стадия завершается исключительным образом с исключением указанного действия. Если же эта стадия завершилась исключительным образом и указанное действие выбрасывает исключение, возвращаемая стадия завершается исключительным образом с исключением этой стадии.

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

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

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

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

exceptionally

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

exceptionallyAsync

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

exceptionallyAsync

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

exceptionallyCompose

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

exceptionallyComposeAsync

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

exceptionallyComposeAsync

default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn, Executor executor)
Возвращает новый CompletionStage, который при исключительном завершении этой стадии компонуется с использованием результата применения указанной функции к исключению этой стадии, используя предоставленный Executor.
Требования к реализации:
Реализация по умолчанию вызывает handle(BiFunction), перенаправляя вызов к handleAsync(BiFunction) при исключении, а затем вызывает thenCompose(Function) для результата.
Параметры:
fn — функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом
executor — исполнитель, используемый для асинхронного выполнения
Возвращает:
новый CompletionStage
С версии:
12

toCompletableFuture

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

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

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

Spec-Zone.ru

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