Интерфейс CompletionStage<T>
- Все известные реализующие классы:
CompletableFuture
public interface CompletionStage<T>
- Вычисление, выполняемое этапом, может быть выражено как Function, Consumer или Runnable (используя методы с названиями, включающими apply, accept или run соответственно), в зависимости от того, требует ли оно аргументов и/или производит результаты. Например:
Дополнительная форма (compose) позволяет создавать цепочки вычислений из функций, возвращающих CompletionStage.stage.thenApply(x -> square(x)) .thenAccept(x -> System.out.print(x)) .thenRun(() -> System.out.println());Любой аргумент вычисления этапа является результатом вычисления запускающего этапа.
- Выполнение одного этапа может быть запущено завершением одного этапа, или обоих двух этапов, или любого из двух этапов. Зависимости от одного этапа организуются с помощью методов с префиксом then. Те, которые запускаются завершением обоих двух этапов, могут combine свои результаты или эффекты, используя соответствующие методы. Те, которые запускаются любым из двух этапов, не гарантируют, какой из результатов или эффектов используется для вычисления зависимого этапа.
- Зависимости между этапами контролируют запуск вычислений, но не гарантируют никакой особой последовательности. Кроме того, выполнение вычислений нового этапа может быть организовано тремя способами: по умолчанию, по умолчанию асинхронно (используя методы с суффиксом async, которые используют стандартную асинхронную обработку этапа) или пользовательским (через предоставленный
Executor). Свойства выполнения режимов по умолчанию и асинхронного режима определяются реализациями CompletionStage, а не этим интерфейсом. Методы с явными аргументами Executor могут иметь произвольные свойства выполнения и могут даже не поддерживать параллельное выполнение, но организованы для обработки таким образом, чтобы учитывать асинхронность. - Две формы методов (
handleиwhenComplete) поддерживают безусловное вычисление независимо от того, завершился ли запускающий этап нормально или с исключением. Методexceptionallyподдерживает вычисление только при завершении запускающего этапа с исключением, вычисляя заменяющий результат, аналогично ключевому слову javacatch. Во всех остальных случаях, если вычисление этапа завершается внезапно с (непроверяемым) исключением или ошибкой, все зависимые этапы, требующие его завершения, также завершаются с исключением, с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() обеспечивает межсетевое взаимодействие между различными реализациями этого интерфейса, предоставляя общий тип преобразования.
- Since:
- 1.8
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
CompletionStage<Void> |
acceptEither |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершаются нормально, выполняется с соответствующим результатом в качестве аргумента для предоставленного действия. |
CompletionStage<Void> |
acceptEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершаются нормально, выполняется с использованием стандартного средства асинхронного выполнения этой стадии, с соответствующим результатом в качестве аргумента для предоставленного действия. |
CompletionStage<Void> |
acceptEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершаются нормально, выполняется с использованием предоставленного исполнителя, с соответствующим результатом в качестве аргумента для предоставленного действия. |
<U> CompletionStage<U> |
applyToEither |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершаются нормально, выполняется с соответствующим результатом в качестве аргумента для предоставленной функции. |
<U> CompletionStage<U> |
applyToEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершаются нормально, выполняется с использованием стандартного средства асинхронного выполнения этой стадии, с соответствующим результатом в качестве аргумента для предоставленной функции. |
<U> CompletionStage<U> |
applyToEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершаются нормально, выполняется с использованием предоставленного исполнителя, с соответствующим результатом в качестве аргумента для предоставленной функции. |
CompletionStage<T> |
exceptionally |
Возвращает новый CompletionStage, который, когда эта стадия завершается с исключением, выполняется с исключением этой стадии в качестве аргумента для предоставленной функции. |
default CompletionStage<T> |
exceptionallyAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается с исключением, выполняется с исключением этой стадии в качестве аргумента для предоставленной функции, используя стандартное средство асинхронного выполнения этой стадии. |
default CompletionStage<T> |
exceptionallyAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается с исключением, выполняется с исключением этой стадии в качестве аргумента для предоставленной функции, используя предоставленный Executor. |
default CompletionStage<T> |
exceptionallyCompose |
Возвращает новый CompletionStage, который, когда эта стадия завершается с исключением, компонуется с использованием результатов предоставленной функции, примененной к исключению этой стадии. |
default CompletionStage<T> |
exceptionallyComposeAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается с исключением, компонуется с использованием результатов предоставленной функции, примененной к исключению этой стадии, используя стандартное средство асинхронного выполнения этой стадии. |
default CompletionStage<T> |
exceptionallyComposeAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается с исключением, компонуется с использованием результатов предоставленной функции, примененной к исключению этой стадии, используя предоставленный Executor. |
<U> CompletionStage<U> |
handle |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально или с исключением, выполняется с результатом и исключением этой стадии в качестве аргументов для предоставленной функции. |
<U> CompletionStage<U> |
handleAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально или с исключением, выполняется с использованием стандартного средства асинхронного выполнения этой стадии, с результатом и исключением этой стадии в качестве аргументов для предоставленной функции. |
<U> CompletionStage<U> |
handleAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально или с исключением, выполняется с использованием предоставленного исполнителя, с результатом и исключением этой стадии в качестве аргументов для предоставленной функции. |
CompletionStage<Void> |
runAfterBoth |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершаются нормально, выполняет предоставленное действие. |
CompletionStage<Void> |
runAfterBothAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершаются нормально, выполняет предоставленное действие с использованием стандартного средства асинхронного выполнения этой стадии. |
CompletionStage<Void> |
runAfterBothAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершаются нормально, выполняет предоставленное действие с использованием предоставленного исполнителя. |
CompletionStage<Void> |
runAfterEither |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершаются нормально, выполняет предоставленное действие. |
CompletionStage<Void> |
runAfterEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершаются нормально, выполняет предоставленное действие с использованием стандартного средства асинхронного выполнения этой стадии. |
CompletionStage<Void> |
runAfterEitherAsync |
Возвращает новый CompletionStage, который, когда эта или другая заданная стадия завершаются нормально, выполняет предоставленное действие с использованием предоставленного исполнителя. |
CompletionStage<Void> |
thenAccept |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с результатом этой стадии в качестве аргумента для предоставленного действия. |
CompletionStage<Void> |
thenAcceptAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием стандартного средства асинхронного выполнения этой стадии, с результатом этой стадии в качестве аргумента для предоставленного действия. |
CompletionStage<Void> |
thenAcceptAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием предоставленного Executor, с результатом этой стадии в качестве аргумента для предоставленного действия. |
<U> CompletionStage<Void> |
thenAcceptBoth |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершаются нормально, выполняется с двумя результатами в качестве аргументов для предоставленного действия. |
<U> CompletionStage<Void> |
thenAcceptBothAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершаются нормально, выполняется с использованием стандартного средства асинхронного выполнения этой стадии, с двумя результатами в качестве аргументов для предоставленного действия. |
<U> CompletionStage<Void> |
thenAcceptBothAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершаются нормально, выполняется с использованием предоставленного исполнителя, с двумя результатами в качестве аргументов для предоставленного действия. |
<U> CompletionStage<U> |
thenApply |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с результатом этой стадии в качестве аргумента для предоставленной функции. |
<U> CompletionStage<U> |
thenApplyAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием стандартного средства асинхронного выполнения этой стадии, с результатом этой стадии в качестве аргумента для предоставленной функции. |
<U> CompletionStage<U> |
thenApplyAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняется с использованием предоставленного Executor, с результатом этой стадии в качестве аргумента для предоставленной функции. |
<U, |
thenCombine |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершаются нормально, выполняется с двумя результатами в качестве аргументов для предоставленной функции. |
<U, |
thenCombineAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершаются нормально, выполняется с использованием стандартного средства асинхронного выполнения этой стадии, с двумя результатами в качестве аргументов для предоставленной функции. |
<U, |
thenCombineAsync |
Возвращает новый CompletionStage, который, когда эта и другая заданная стадия завершаются нормально, выполняется с использованием предоставленного исполнителя, с двумя результатами в качестве аргументов для предоставленной функции. |
<U> CompletionStage<U> |
thenCompose |
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый предоставленной функцией. |
<U> CompletionStage<U> |
thenComposeAsync |
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый предоставленной функцией, выполняемой с использованием стандартного средства асинхронного выполнения этой стадии. |
<U> CompletionStage<U> |
thenComposeAsync |
Возвращает новый CompletionStage, который завершается тем же значением, что и CompletionStage, возвращаемый предоставленной функцией, выполняемой с использованием предоставленного Executor. |
CompletionStage<Void> |
thenRun |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняет предоставленное действие. |
CompletionStage<Void> |
thenRunAsync |
Возвращает новый CompletionStage, который, когда эта стадия завершается нормально, выполняет предоставленное действие с использованием стандартного средства асинхронного выполнения этой стадии. |
CompletionStage<Void> |
thenRunAsync |
Возвращает новый CompletionStage, который, когда этот этап завершится нормально, выполнит заданный метод с помощью предоставленного Executor. |
CompletableFuture<T> |
toCompletableFuture() |
Возвращает CompletableFuture, сохраняя те же свойства завершения, что и у этого этапа. |
CompletionStage<T> |
whenComplete |
Возвращает новый CompletionStage с тем же результатом или исключением, что и у этого этапа, который выполняет заданный метод, когда этот этап завершается. |
CompletionStage<T> |
whenCompleteAsync |
Возвращает новый CompletionStage с тем же результатом или исключением, что и у этого этапа, который выполняет заданный метод, используя стандартные асинхронные средства выполнения этого этапа, когда этот этап завершается. |
CompletionStage<T> |
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- тип результата другой 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 для правил, охватывающих исключительное завершение.- Тип параметров:
-
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 для правил, охватывающих исключительное завершение.- Тип параметров:
-
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 для правил, охватывающих исключительное завершение.- Тип параметров:
-
U- тип результата другой CompletionStage - Параметры:
-
other- другая CompletionStage -
action- действие, которое выполняется перед завершением возвращаемой CompletionStage - Возвращает:
- новая CompletionStage
thenAcceptBothAsync
<U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Type Parameters:
-
U- тип результата другого CompletionStage - Parameters:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Returns:
- новый CompletionStage
thenAcceptBothAsync
<U> CompletionStage<Void> thenAcceptBothAsync(CompletionStage<? extends U> other, BiConsumer<? super T,? super U> action, Executor executor)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Type Parameters:
-
U- тип результата другого CompletionStage - Parameters:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage -
executor- исполнитель для использования в асинхронном выполнении - Returns:
- новый CompletionStage
runAfterBoth
CompletionStage<Void> runAfterBoth(CompletionStage<?> other, Runnable action)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Parameters:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Returns:
- новый CompletionStage
runAfterBothAsync
CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Parameters:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Returns:
- новый CompletionStage
runAfterBothAsync
CompletionStage<Void> runAfterBothAsync(CompletionStage<?> other, Runnable action, Executor executor)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Parameters:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage -
executor- исполнитель для использования в асинхронном выполнении - Returns:
- новый CompletionStage
applyToEither
<U> CompletionStage<U> applyToEither(CompletionStage<? extends T> other, Function<? super T,U> fn)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Type Parameters:
-
U- возвращаемый тип функции - Parameters:
-
other- другой CompletionStage -
fn- функция для вычисления значения возвращаемого CompletionStage - Returns:
- новый CompletionStage
applyToEitherAsync
<U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Type Parameters:
-
U- возвращаемый тип функции - Parameters:
-
other- другой CompletionStage -
fn- функция для вычисления значения возвращаемого CompletionStage - Returns:
- новый CompletionStage
applyToEitherAsync
<U> CompletionStage<U> applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn, Executor executor)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Type Parameters:
-
U- возвращаемый тип функции - Parameters:
-
other- другой CompletionStage -
fn- функция для вычисления значения возвращаемого CompletionStage -
executor- исполнитель для использования в асинхронном выполнении - Returns:
- новый CompletionStage
acceptEither
CompletionStage<Void> acceptEither(CompletionStage<? extends T> other, Consumer<? super T> action)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Parameters:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Returns:
- новый CompletionStage
acceptEitherAsync
CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Parameters:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Returns:
- новый CompletionStage
acceptEitherAsync
CompletionStage<Void> acceptEitherAsync(CompletionStage<? extends T> other, Consumer<? super T> action, Executor executor)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Parameters:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage -
executor- исполнитель для использования в асинхронном выполнении - Returns:
- новый CompletionStage
runAfterEither
CompletionStage<Void> runAfterEither(CompletionStage<?> other, Runnable action)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Parameters:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Returns:
- новый CompletionStage
runAfterEitherAsync
CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action)
CompletionStage документацию для правил, охватывающих исключительное завершение.- Parameters:
-
other- другой CompletionStage -
action- действие, которое должно быть выполнено перед завершением возвращаемого CompletionStage - Returns:
- новый CompletionStage
runAfterEitherAsync
CompletionStage<Void> runAfterEitherAsync(CompletionStage<?> other, Runnable action, Executor executor)
CompletionStage для правил, охватывающих исключительное завершение.- Параметры:
-
other- другой CompletionStage -
action- действие, которое нужно выполнить перед завершением возвращаемого CompletionStage -
executor- используемый для асинхронного выполнения 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- используемый для асинхронного выполнения 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- используемый для асинхронного выполнения Executor - Возвращает:
- новый CompletionStage
whenComplete
CompletionStage<T> whenComplete(BiConsumer<? super T,? super Throwable> action)
Когда этот этап завершен, заданное действие вызывается с результатом (или null если его нет) и исключением (или null если его нет) этого этапа в качестве аргументов. Возвращаемый этап завершается, когда действие возвращает значение.
В отличие от метода handle, этот метод не предназначен для преобразования результатов завершения, поэтому заданное действие не должно вызывать исключение. Однако, если это произойдет, применяются следующие правила: если этот этап завершился нормально, но заданное действие вызывает исключение, то возвращаемый этап завершается с исключением, выброшенным заданным действием. Или, если этот этап завершился с исключением, и заданное действие вызывает исключение, то возвращаемый этап завершается с исключением этого этапа.
- Параметры:
-
action- выполняемое действие - Возвращает:
- новый CompletionStage
whenCompleteAsync
CompletionStage<T> whenCompleteAsync(BiConsumer<? super T,? super Throwable> action)
Когда этот этап завершен, заданное действие вызывается с результатом (или null если его нет) и исключением (или null если его нет) этого этапа в качестве аргументов. Возвращаемый этап завершается, когда действие возвращает значение.
В отличие от метода handleAsync, этот метод не предназначен для преобразования результатов завершения, поэтому заданное действие не должно вызывать исключение. Однако, если это произойдет, применяются следующие правила: если этот этап завершился нормально, но заданное действие вызывает исключение, то возвращаемый этап завершается с исключением, выброшенным заданным действием. Или, если этот этап завершился с исключением, и заданное действие вызывает исключение, то возвращаемый этап завершается с исключением этого этапа.
- Параметры:
-
action- выполняемое действие - Возвращает:
- новый CompletionStage
whenCompleteAsync
CompletionStage<T> whenCompleteAsync(BiConsumer<? super T,? super Throwable> action, Executor executor)
Когда этот этап завершен, заданное действие вызывается с результатом (или null если его нет) и исключением (или null если его нет) этого этапа в качестве аргументов. Возвращаемый этап завершается, когда действие возвращает значение.
В отличие от метода handleAsync, этот метод не предназначен для преобразования результатов завершения, поэтому заданное действие не должно вызывать исключение. Однако, если это произойдет, применяются следующие правила: если этот этап завершился нормально, но заданное действие вызывает исключение, то возвращаемый этап завершается с исключением, выброшенным заданным действием. Или, если этот этап завершился с исключением, и заданное действие вызывает исключение, то возвращаемый этап завершается с исключением этого этапа.
- Параметры:
-
action- выполняемое действие -
executor- используемый для асинхронного выполнения Executor - Возвращает:
- новый CompletionStage
исключительно
CompletionStage<T> exceptionally(Function<Throwable,? extends T> fn)
- Параметры:
-
fn- функция, используемая для вычисления значения возвращаемой CompletionStage, если этот CompletionStage завершился с исключением - Возвращает:
- новая CompletionStage
исключительноАсинхронно
default CompletionStage<T> exceptionallyAsync(Function<Throwable,? extends T> fn)
- Требования к реализации:
- Стандартная реализация вызывает
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>>)для результата. - Параметры:
-
fn- функция, используемая для вычисления значения возвращаемой CompletionStage, если этот CompletionStage завершился с исключением - Возвращает:
- новая CompletionStage
- С:
- 12
исключительноАсинхронно
default CompletionStage<T> exceptionallyAsync(Function<Throwable,? extends T> fn, Executor executor)
- Требования к реализации:
- Стандартная реализация вызывает
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>>)для результата. - Параметры:
-
fn- функция, используемая для вычисления значения возвращаемой CompletionStage, если этот CompletionStage завершился с исключением -
executor- executor для использования в асинхронном выполнении - Возвращает:
- новая CompletionStage
- С:
- 12
исключительноКомпозировать
default CompletionStage<T> exceptionallyCompose(Function<Throwable,? extends CompletionStage<T>> fn)
- Требования к реализации:
- Стандартная реализация вызывает
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>>)для результата. - Параметры:
-
fn- функция, используемая для вычисления возвращаемой CompletionStage, если этот CompletionStage завершился с исключением - Возвращает:
- новая CompletionStage
- С:
- 12
исключительноКомпозироватьАсинхронно
default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable,? extends CompletionStage<T>> fn)
- Требования к реализации:
- Стандартная реализация вызывает
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>>)для результата. - Параметры:
-
fn- функция, используемая для вычисления возвращаемой CompletionStage, если этот CompletionStage завершился с исключением - Возвращает:
- новая CompletionStage
- С:
- 12
исключительноКомпозироватьАсинхронно
default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable,? extends CompletionStage<T>> fn, Executor executor)
- Требования к реализации:
- Стандартная реализация вызывает
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>>)для результата. - Параметры:
-
fn- функция, используемая для вычисления возвращаемой CompletionStage, если этот CompletionStage завершился с исключением -
executor- executor для использования в асинхронном выполнении - Возвращает:
- новая CompletionStage
- С:
- 12
toCompletableFuture
CompletableFuture<T> toCompletableFuture()
CompletableFuture, сохраняющий те же свойства завершения, что и этот этап. Если этот этап уже является CompletableFuture, этот метод может вернуть этот этап сам по себе. В противном случае вызов этого метода может быть эквивалентным по своему воздействию thenApply(x -> x), но возвращает экземпляр типа CompletableFuture.- Возвращает:
- CompletableFuture
© 1993, 2021, 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/17/docs/api/java.base/java/util/concurrent/CompletionStage.html