Интерфейс CompletionStage<T>
- Параметры типа:
T- тип значений, производимых или потребляемых этапом
- Все известные реализующие классы:
CompletableFuture
public interface CompletionStage<T>
- Вычисление, выполняемое этапом, может быть выражено как функция, потребитель или Runnable (используя методы с именами, включающими apply, accept или run соответственно), в зависимости от того, требуются ли аргументы и/или производятся ли результаты. Например:
Дополнительная форма (compose) позволяет создавать цепочки вычислений из функций, возвращающих этапы завершения.stage.thenApply(x -> square(x)) .thenAccept(x -> System.out.print(x)) .thenRun(() -> System.out.println());Любой аргумент вычисления этапа является результатом вычисления запускающего этапа.
- Выполнение одного этапа может быть инициировано завершением одного этапа, или двух этапов, или любого из двух этапов. Зависимости от одного этапа организованы с помощью методов с префиксом then. Те, которые инициируются завершением обоих двух этапов, могут объединить свои результаты или эффекты, используя соответствующие именованные методы. Те, которые инициируются любым из двух этапов, не гарантируют, какой из результатов или эффектов будет использоваться для вычисления зависимого этапа.
- Зависимости между этапами управляют инициированием вычислений, но не гарантируют никакой конкретной последовательности. Кроме того, выполнение вычислений нового этапа может быть организовано тремя способами: по умолчанию, по умолчанию асинхронное выполнение (с помощью методов с суффиксом async, использующих стандартные асинхронные средства этапа), или пользовательское (через предоставленный
Executor). Свойства выполнения режимов по умолчанию и async определяются реализациями CompletionStage, а не этим интерфейсом. Методы с явными аргументами Executor могут иметь произвольные свойства выполнения и могут даже не поддерживать одновременное выполнение, но организованы для обработки таким образом, чтобы учитывать асинхронность. - Две формы методов (
handleиwhenComplete) поддерживают безусловное вычисление, независимо от того, завершился ли запускающий этап нормально или с исключением. Методexceptionallyподдерживает вычисление только при завершении запускающего этапа с исключением, вычисляя заменяющий результат, аналогично ключевому слову javacatch. Во всех остальных случаях, если вычисление этапа завершается внезапно с (непроверенным) исключением или ошибкой, все зависимые этапы, требующие его завершения, также завершаются с исключением сCompletionException, содержащим исключение в качестве причины. Если этап зависит от обоих двух этапов, и оба завершаются с исключением, то CompletionException может соответствовать любому из этих исключений. Если этап зависит от любого из двух других, и только один из них завершается с исключением, не делается никаких гарантий о том, завершается ли зависимый этап нормально или с исключением. В случае методаwhenComplete, когда предоставленное действие само сталкивается с исключением, этап завершается с этим исключением, если только исходный этап также не завершился с исключением, в этом случае предпочтительно и распространяется исключительное завершение исходного этапа на зависимый этап.
Все методы соответствуют вышеуказанным спецификациям запуска, выполнения и исключительного завершения (которые не повторяются в отдельных спецификациях методов). Кроме того, хотя аргументы, используемые для передачи результата завершения (то есть, для параметров типа T) для методов, принимающих их, могут быть нулевыми, передача нулевого значения для любого другого параметра приведет к выбрасыванию NullPointerException.
Форма метода handle является наиболее общим способом создания этапа продолжения, безусловно выполняющего вычисление, которому передаются результат и исключение (если таковое имеется) запускающего CompletionStage, и вычисляется произвольный результат. Метод whenComplete аналогичен, но сохраняет результат запускающего этапа вместо вычисления нового. Поскольку нормальный результат этапа может быть null, оба метода должны иметь структурированное таким образом вычисление:
(result, exception) -> {
if (exception == null) {
// triggering stage completed normally
} else {
// triggering stage completed exceptionally
}
} Этот интерфейс не определяет методы для первоначального создания, принудительного нормального или исключительного завершения, проверки состояния или результатов завершения или ожидания завершения этапа. Реализации CompletionStage могут предоставлять средства для достижения таких эффектов, если это уместно. Метод toCompletableFuture() обеспечивает взаимодействие между различными реализациями этого интерфейса, предоставляя общий тип преобразования.
- С момента:
- 1.8
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
CompletionStage |
acceptEither |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с соответствующим результатом в качестве аргумента для предоставленного действия. |
CompletionStage |
acceptEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с соответствующим результатом в качестве аргумента для предоставленного действия. |
CompletionStage |
acceptEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с использованием предоставленного исполнителя, с соответствующим результатом в качестве аргумента для предоставленного действия. |
<U> CompletionStage |
applyToEither |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с соответствующим результатом в качестве аргумента для предоставленной функции. |
<U> CompletionStage |
applyToEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с соответствующим результатом в качестве аргумента для предоставленной функции. |
<U> CompletionStage |
applyToEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняется с использованием предоставленного исполнителя, с соответствующим результатом в качестве аргумента для предоставленной функции. |
CompletionStage |
exceptionally |
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, выполняется с исключением этой стадии в качестве аргумента для предоставленной функции. |
default CompletionStage |
exceptionallyAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, выполняется с исключением этой стадии в качестве аргумента для предоставленной функции, используя стандартный асинхронный механизм выполнения этой стадии. |
default CompletionStage |
exceptionallyAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, выполняется с исключением этой стадии в качестве аргумента для предоставленной функции, используя предоставленный Executor. |
default CompletionStage |
exceptionallyCompose |
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, компонуется с использованием результатов предоставленной функции, применённой к исключению этой стадии. |
default CompletionStage |
exceptionallyComposeAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, компонуется с использованием результатов предоставленной функции, применённой к исключению этой стадии, используя стандартный асинхронный механизм выполнения этой стадии. |
default CompletionStage |
exceptionallyComposeAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается с ошибкой, компонуется с использованием результатов предоставленной функции, применённой к исключению этой стадии, используя предоставленный Executor. |
<U> CompletionStage |
handle |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально или с ошибкой, выполняется с результатом и исключением этой стадии в качестве аргументов для предоставленной функции. |
<U> CompletionStage |
handleAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально или с ошибкой, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с результатом и исключением этой стадии в качестве аргументов для предоставленной функции. |
<U> CompletionStage |
handleAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально или с ошибкой, выполняется с использованием предоставленного исполнителя, с результатом и исключением этой стадии в качестве аргументов для предоставленной функции. |
CompletionStage |
runAfterBoth |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняет предоставленное действие. |
CompletionStage |
runAfterBothAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняет предоставленное действие с использованием стандартного асинхронного механизма выполнения этой стадии. |
CompletionStage |
runAfterBothAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняет предоставленное действие с использованием предоставленного исполнителя. |
CompletionStage |
runAfterEither |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняет предоставленное действие. |
CompletionStage |
runAfterEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняет предоставленное действие с использованием стандартного асинхронного механизма выполнения этой стадии. |
CompletionStage |
runAfterEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершатся нормально, выполняет предоставленное действие с использованием предоставленного исполнителя. |
CompletionStage |
thenAccept |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с результатом этой стадии в качестве аргумента для предоставленного действия. |
CompletionStage |
thenAcceptAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с результатом этой стадии в качестве аргумента для предоставленного действия. |
CompletionStage |
thenAcceptAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием предоставленного Executor, с результатом этой стадии в качестве аргумента для предоставленного действия. |
<U> CompletionStage |
thenAcceptBoth |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с двумя результатами в качестве аргументов для предоставленного действия. |
<U> CompletionStage |
thenAcceptBothAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с двумя результатами в качестве аргументов для предоставленного действия. |
<U> CompletionStage |
thenAcceptBothAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с использованием предоставленного исполнителя, с двумя результатами в качестве аргументов для предоставленного действия. |
<U> CompletionStage |
thenApply |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с результатом этой стадии в качестве аргумента для предоставленной функции. |
<U> CompletionStage |
thenApplyAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с результатом этой стадии в качестве аргумента для предоставленной функции. |
<U> CompletionStage |
thenApplyAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием предоставленного Executor, с результатом этой стадии в качестве аргумента для предоставленной функции. |
<U, |
thenCombine |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с двумя результатами в качестве аргументов для предоставленной функции. |
<U, |
thenCombineAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с использованием стандартного асинхронного механизма выполнения этой стадии, с двумя результатами в качестве аргументов для предоставленной функции. |
<U, |
thenCombineAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершатся нормально, выполняется с использованием предоставленного исполнителя, с двумя результатами в качестве аргументов для предоставленной функции. |
<U> CompletionStage |
thenCompose |
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый предоставленной функцией. |
<U> CompletionStage |
thenComposeAsync |
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый предоставленной функцией, выполненной с использованием стандартного асинхронного механизма выполнения этой стадии. |
<U> CompletionStage |
thenComposeAsync |
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый предоставленной функцией, выполненной с использованием предоставленного Executor. |
CompletionStage |
thenRun |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняет предоставленное действие. |
CompletionStage |
thenRunAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняет предоставленное действие с использованием стандартного асинхронного механизма выполнения этой стадии. |
CompletionStage |
thenRunAsync |
Возвращает новую CompletionStage, которая, когда эта фаза завершится нормально, выполняет заданный метод с использованием предоставленного Executor. |
CompletableFuture |
toCompletableFuture() |
Возвращает CompletableFuture, сохраняя те же свойства завершения, что и у этой фазы. |
CompletionStage |
whenComplete |
Возвращает новую CompletionStage с тем же результатом или исключением, что и у этой фазы, которая выполняет заданный метод, когда эта фаза завершается. |
CompletionStage |
whenCompleteAsync |
Возвращает новую CompletionStage с тем же результатом или исключением, что и у этой фазы, которая выполняет заданный метод, используя стандартное асинхронное средство выполнения этой фазы, когда эта фаза завершается. |
CompletionStage |
whenCompleteAsync |
Возвращает новую CompletionStage с тем же результатом или исключением, что и у этой фазы, которая выполняет заданный метод с использованием предоставленного Executor, когда эта фаза завершается. |
Подробное описание методов
thenApply
<U> CompletionStage<U> thenApply(Function<? super T, ? extends U> fn)
Этот метод аналогичен Optional.map и Stream.map.
См. документацию CompletionStage для правил, касающихся исключительного завершения.
- Параметры типа:
U- тип возвращаемого значения функции- Параметры:
-
fn- функция, используемая для вычисления значения возвращаемой CompletionStage - Возвращаемое значение:
- новая CompletionStage
thenApplyAsync
<U> CompletionStage<U> thenApplyAsync(Function<? super T, ? extends U> fn)
CompletionStage для правил, касающихся исключительного завершения.- Параметры типа:
U- тип возвращаемого значения функции- Параметры:
-
fn- функция, используемая для вычисления значения возвращаемой CompletionStage - Возвращаемое значение:
- новая CompletionStage
thenApplyAsync
<U> CompletionStage<U> thenApplyAsync(Function<? super T, ? extends U> fn, Executor executor)
CompletionStage для правил, касающихся исключительного завершения.- Параметры типа:
U- тип возвращаемого значения функции- Параметры:
-
fn- функция, используемая для вычисления значения возвращаемой CompletionStage -
executor- executor для использования в асинхронном выполнении - Возвращаемое значение:
- новая CompletionStage
thenAccept
CompletionStage<Void> thenAccept(Consumer<? super T> action)
CompletionStage для правил, касающихся исключительного завершения.- Параметры:
-
action- действие, выполняемое перед завершением возвращаемой CompletionStage - Возвращаемое значение:
- новая CompletionStage
thenAcceptAsync
CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action)
CompletionStage для правил, касающихся исключительного завершения.- Параметры:
-
action- действие, выполняемое перед завершением возвращаемой CompletionStage - Возвращаемое значение:
- новая CompletionStage
thenAcceptAsync
CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action, Executor executor)
CompletionStage для правил, касающихся исключительного завершения.- Параметры:
-
action- действие, выполняемое перед завершением возвращаемой CompletionStage -
executor- executor для использования в асинхронном выполнении - Возвращаемое значение:
- новая CompletionStage
thenRun
CompletionStage<Void> thenRun(Runnable action)
CompletionStage для правил, касающихся исключительного завершения.- Параметры:
-
action- действие, выполняемое перед завершением возвращаемой CompletionStage - Возвращаемое значение:
- новая CompletionStage
thenRunAsync
CompletionStage<Void> thenRunAsync(Runnable action)
CompletionStage для правил, касающихся исключительного завершения.- Параметры:
-
action- действие, выполняемое перед завершением возвращаемой CompletionStage - Возвращаемое значение:
- новая CompletionStage
thenRunAsync
CompletionStage<Void> thenRunAsync(Runnable action, Executor 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 для правил, касающихся исключительного завершения.- Параметры типа:
U- тип результата другой CompletionStageV- тип возвращаемого значения функции- Параметры:
-
other- другая CompletionStage -
fn- функция, используемая для вычисления значения возвращаемой CompletionStage - Возвращаемое значение:
- новая CompletionStage
thenCombineAsync
<U,V> CompletionStage<V> thenCombineAsync(CompletionStage<? extends U> other, BiFunction<? super T, ? super U, ? extends V> fn)
CompletionStage для правил, касающихся исключительного завершения.- Параметры типа:
U- тип результата другой CompletionStageV- тип возвращаемого значения функции- Параметры:
-
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 для правил, касающихся исключительного завершения.- Параметры типа:
U- тип результата другой CompletionStageV- тип возвращаемого значения функции- Параметры:
-
other- другая CompletionStage -
fn- функция, используемая для вычисления значения возвращаемой CompletionStage -
executor- executor для использования в асинхронном выполнении - Возвращаемое значение:
- новая CompletionStage
thenAcceptBoth
<U> CompletionStage<Void> thenAcceptBoth(CompletionStage<? extends U> other, BiConsumer<? super T, ? super U> action)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры типа:
U- тип результата другого CompletionStage- Параметры:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Возвращает:
- новая CompletionStage
thenAcceptBothAsync
<U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T, ? super U> action)
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 для правил, охватывающих исключительное завершение.- Параметры типа:
U- тип результата другого CompletionStage- Параметры:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage -
executor- исполнитель для использования в асинхронном выполнении - Возвращает:
- новая CompletionStage
runAfterBoth
CompletionStage<Void> runAfterBoth(CompletionStage<?> other, Runnable action)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Возвращает:
- новая CompletionStage
runAfterBothAsync
CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Возвращает:
- новая CompletionStage
runAfterBothAsync
CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action, Executor executor)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage -
executor- исполнитель для использования в асинхронном выполнении - Возвращает:
- новая CompletionStage
applyToEither
<U> CompletionStage<U> applyToEither(CompletionStage<? extends T> other, Function<? super T, U> fn)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры типа:
U- тип возвращаемого значения функции- Параметры:
-
other- другой CompletionStage -
fn- функция, используемая для вычисления значения возвращаемого CompletionStage - Возвращает:
- новая CompletionStage
applyToEitherAsync
<U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T, U> fn)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры типа:
U- тип возвращаемого значения функции- Параметры:
-
other- другой CompletionStage -
fn- функция, используемая для вычисления значения возвращаемого CompletionStage - Возвращает:
- новая CompletionStage
applyToEitherAsync
<U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T, U> fn, Executor executor)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры типа:
U- тип возвращаемого значения функции- Параметры:
-
other- другой CompletionStage -
fn- функция, используемая для вычисления значения возвращаемого CompletionStage -
executor- исполнитель для использования в асинхронном выполнении - Возвращает:
- новая CompletionStage
acceptEither
CompletionStage<Void> acceptEither(CompletionStage<? extends T> other, Consumer<? super T> action)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Возвращает:
- новая CompletionStage
acceptEitherAsync
CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Возвращает:
- новая CompletionStage
acceptEitherAsync
CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action, Executor executor)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры:
-
other- другой CompletionStage -
action- действие, которое необходимо выполнить перед завершением возвращаемого CompletionStage -
executor- исполнитель, который необходимо использовать для асинхронного выполнения - Возвращает:
- новый CompletionStage
runAfterEither
CompletionStage<Void> runAfterEither(CompletionStage<?> other, Runnable action)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры:
-
other- другой CompletionStage -
action- действие, которое необходимо выполнить перед завершением возвращаемого CompletionStage - Возвращает:
- новый CompletionStage
runAfterEitherAsync
CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры:
-
other- другой CompletionStage -
action- действие, которое необходимо выполнить перед завершением возвращаемого CompletionStage - Возвращает:
- новый CompletionStage
runAfterEitherAsync
CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action, Executor executor)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры:
-
other- другой CompletionStage -
action- действие, которое необходимо выполнить перед завершением возвращаемого CompletionStage -
executor- исполнитель, который необходимо использовать для асинхронного выполнения - Возвращает:
- новый CompletionStage
thenCompose
<U> CompletionStage<U> thenCompose(Function<? super T, ? extends CompletionStage<U>> fn)
Когда этот этап завершается нормально, заданная функция вызывается с результатом этого этапа в качестве аргумента, возвращая другой 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 для правил, охватывающих исключительное завершение.
- Параметры типа:
U- тип результата возвращаемого CompletionStage- Параметры:
-
fn- функция, используемая для вычисления другого CompletionStage - Возвращает:
- новый CompletionStage
thenComposeAsync
<U> CompletionStage<U> thenComposeAsync(Function<? super T, ? extends CompletionStage<U>> fn, Executor executor)
Когда этот этап завершается нормально, заданная функция вызывается с результатом этого этапа в качестве аргумента, возвращая другой CompletionStage. Когда этот этап завершается нормально, CompletionStage, возвращаемый этим методом, завершается тем же значением.
Для обеспечения прогресса предоставленная функция должна организовать окончательное завершение своего результата.
См. документацию CompletionStage для правил, охватывающих исключительное завершение.
- Параметры типа:
U- тип результата возвращаемого CompletionStage- Параметры:
-
fn- функция, используемая для вычисления другого CompletionStage -
executor- исполнитель, который необходимо использовать для асинхронного выполнения - Возвращает:
- новый CompletionStage
handle
<U> CompletionStage<U> handle(BiFunction<? super T, Throwable, ? extends U> fn)
Когда этот этап завершен, заданная функция вызывается с результатом (или null, если его нет) и исключением (или null, если его нет) этого этапа в качестве аргументов, и результат функции используется для завершения возвращаемого этапа.
- Параметры типа:
U- тип возвращаемого значения функции- Параметры:
-
fn- функция, используемая для вычисления значения возвращаемого CompletionStage - Возвращает:
- новый CompletionStage
handleAsync
<U> CompletionStage<U> handleAsync(BiFunction<? super T, Throwable, ? extends U> fn)
Когда этот этап завершен, заданная функция вызывается с результатом (или null, если его нет) и исключением (или null, если его нет) этого этапа в качестве аргументов, и результат функции используется для завершения возвращаемого этапа.
- Параметры типа:
U- тип возвращаемого значения функции- Параметры:
-
fn- функция, используемая для вычисления значения возвращаемого CompletionStage - Возвращает:
- новый CompletionStage
handleAsync
<U> CompletionStage<U> handleAsync(BiFunction<? super T, Throwable, ? extends U> fn, Executor executor)
Когда этот этап завершен, заданная функция вызывается с результатом (или null, если его нет) и исключением (или null, если его нет) этого этапа в качестве аргументов, и результат функции используется для завершения возвращаемого этапа.
- Параметры типа:
U- тип возвращаемого значения функции- Параметры:
-
fn- функция, используемая для вычисления значения возвращаемого CompletionStage -
executor- исполнитель, который необходимо использовать для асинхронного выполнения - Возвращает:
- новый CompletionStage
whenComplete
CompletionStage<T> whenComplete(BiConsumer<? super T, ? super Throwable> action)
При завершении этого этапа заданное действие вызывается с результатом (или null, если такового нет) и исключением (или null, если такового нет) этого этапа в качестве аргументов. Возвращаемый этап завершается, когда действие возвращается.
В отличие от метода handle, этот метод не предназначен для перевода результатов завершения, поэтому заданное действие не должно генерировать исключение. Однако, если это произойдёт, применяются следующие правила: если этот этап завершился нормально, но заданное действие вызвало исключение, то возвращаемый этап завершается с исключением заданного действия. Или, если этот этап завершился с исключением, и заданное действие вызвало исключение, то возвращаемый этап завершается с исключением этого этапа.
- Parameters:
-
action- действие, которое нужно выполнить - Returns:
- новый CompletionStage
whenCompleteAsync
CompletionStage<T> whenCompleteAsync(BiConsumer<? super T, ? super Throwable> action)
При завершении этого этапа заданное действие вызывается с результатом (или null, если такового нет) и исключением (или null, если такового нет) этого этапа в качестве аргументов. Возвращаемый этап завершается, когда действие возвращается.
В отличие от метода handleAsync, этот метод не предназначен для перевода результатов завершения, поэтому заданное действие не должно генерировать исключение. Однако, если это произойдёт, применяются следующие правила: Если этот этап завершился нормально, но заданное действие вызвало исключение, то возвращаемый этап завершается с исключением заданного действия. Или, если этот этап завершился с исключением, и заданное действие вызвало исключение, то возвращаемый этап завершается с исключением этого этапа.
- Parameters:
-
action- действие, которое нужно выполнить - Returns:
- новый CompletionStage
whenCompleteAsync
CompletionStage<T> whenCompleteAsync(BiConsumer<? super T, ? super Throwable> action, Executor executor)
При завершении этого этапа заданное действие вызывается с результатом (или null, если такового нет) и исключением (или null, если такового нет) этого этапа в качестве аргументов. Возвращаемый этап завершается, когда действие возвращается.
В отличие от метода handleAsync, этот метод не предназначен для перевода результатов завершения, поэтому заданное действие не должно генерировать исключение. Однако, если это произойдёт, применяются следующие правила: Если этот этап завершился нормально, но заданное действие вызвало исключение, то возвращаемый этап завершается с исключением заданного действия. Или, если этот этап завершился с исключением, и заданное действие вызвало исключение, то возвращаемый этап завершается с исключением этого этапа.
- Parameters:
-
action- действие, которое нужно выполнить -
executor- executor для асинхронного выполнения - Returns:
- новый CompletionStage
exceptionally
CompletionStage<T> exceptionally(Function<Throwable, ? extends T> fn)
- Parameters:
-
fn- функция, используемая для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился с исключением - Returns:
- новый CompletionStage
exceptionallyAsync
default CompletionStage<T> exceptionallyAsync(Function<Throwable, ? extends T> fn)
- Implementation Requirements:
- Реализация по умолчанию вызывает
handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>), передавая вhandleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)при исключении, а затемthenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>)для результата. - Parameters:
-
fn- функция, используемая для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился с исключением - Returns:
- новый CompletionStage
- Since:
- 12
exceptionallyAsync
default CompletionStage<T> exceptionallyAsync(Function<Throwable, ? extends T> fn, Executor executor)
- Implementation Requirements:
- Реализация по умолчанию вызывает
handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>), передавая вhandleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)при исключении, а затемthenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>)для результата. - Parameters:
-
fn- функция, используемая для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился с исключением -
executor- executor для асинхронного выполнения - Returns:
- новый CompletionStage
- Since:
- 12
exceptionallyCompose
default CompletionStage<T> exceptionallyCompose(Function<Throwable, ? extends CompletionStage<T>> fn)
- Implementation Requirements:
- Реализация по умолчанию вызывает
handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>), вызывая заданную функцию при исключении, а затемthenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>)для результата. - Parameters:
-
fn- функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился с исключением - Returns:
- новый CompletionStage
- Since:
- 12
exceptionallyComposeAsync
default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn)
- Implementation Requirements:
- Реализация по умолчанию вызывает
handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>), передавая вhandleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)при исключении, а затемthenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>)для результата. - Parameters:
-
fn- функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился с исключением - Returns:
- новый CompletionStage
- Since:
- 12
exceptionallyComposeAsync
default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn, Executor executor)
- Implementation Requirements:
- Реализация по умолчанию вызывает
handle(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>), передавая вhandleAsync(java.util.function.BiFunction<? super T, java.lang.Throwable, ? extends U>)при исключении, а затемthenCompose(java.util.function.Function<? super T, ? extends java.util.concurrent.CompletionStage<U>>)для результата. - Parameters:
-
fn- функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился с исключением -
executor- executor для асинхронного выполнения - Returns:
- новый CompletionStage
- Since:
- 12
toCompletableFuture
CompletableFuture<T> toCompletableFuture()
CompletableFuture, сохраняющий те же свойства завершения, что и этот этап. Если этот этап уже является CompletableFuture, этот метод может вернуть сам этот этап. В противном случае, вызов этого метода может быть эквивалентен по эффекту thenApply(x -> x), но возвращая экземпляр типа CompletableFuture.- Returns:
- CompletableFuture
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/CompletionStage.html