Интерфейс CompletionStage<T>
- Параметры типа:
T- тип значений, которые этап производит или принимает
- Все известные реализующие классы:
CompletableFuture
public interface CompletionStage<T>
- Вычисление, выполняемое этапом, может быть выражено как Function, Consumer или Runnable (с использованием методов, имена которых содержат соответственно apply, accept или run) в зависимости от того, требует ли оно аргументов и/или возвращает ли результаты. Например:
Дополнительная форма (compose) позволяет создавать конвейеры вычислений из функций, возвращающих этапы завершения.stage.thenApply(x -> square(x)) .thenAccept(x -> System.out.print(x)) .thenRun(() -> System.out.println());Аргументом вычисления этапа является результат вычисления запускающего этапа.
- Выполнение одного этапа может запускаться после завершения одного этапа, обоих из двух этапов или любого из двух этапов. Зависимости от одного этапа задаются с помощью методов с префиксом then. Методы, запускаемые после завершения обоих этапов, могут объединять их результаты или эффекты с помощью методов с соответствующими именами. Методы, запускаемые после завершения любого из двух этапов, не дают гарантий относительно того, какой из результатов или эффектов будет использован при вычислении зависимого этапа.
- Зависимости между этапами управляют запуском вычислений, но не гарантируют никакого определённого порядка. Кроме того, выполнение вычислений нового этапа может быть организовано одним из трёх способов: выполнение по умолчанию, асинхронное выполнение по умолчанию (с использованием методов с суффиксом 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() обеспечивает взаимодействие различных реализаций этого интерфейса, предоставляя общий тип преобразования.
- С версии:
- 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— исполнитель для асинхронного выполнения - Возвращает:
- новый 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— исполнитель для асинхронного выполнения - Возвращает:
- новый 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— исполнитель для асинхронного выполнения - Возвращает:
- новый 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— исполнитель для асинхронного выполнения - Возвращает:
- новый 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, этот метод не предназначен для преобразования результатов завершения, поэтому указанное действие не должно выбрасывать исключение. Однако, если это произойдёт, применяются следующие правила: если эта стадия завершилась нормально, но указанное действие выбрасывает исключение, возвращаемая стадия завершается исключительным образом с исключением указанного действия. Если же эта стадия завершилась исключительным образом и указанное действие выбрасывает исключение, возвращаемая стадия завершается исключительным образом с исключением этой стадии.
- Параметры:
-
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— исполнитель, используемый для асинхронного выполнения - Возвращает:
- новый CompletionStage
exceptionally
CompletionStage<T> exceptionally(Function<Throwable, ? extends T> fn)
- Параметры:
-
fn— функция, используемая для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом - Возвращает:
- новый CompletionStage
exceptionallyAsync
default CompletionStage<T> exceptionallyAsync(Function<Throwable, ? extends T> fn)
- Требования к реализации:
- Реализация по умолчанию вызывает
handle(BiFunction), перенаправляя вызов кhandleAsync(BiFunction)при исключении, а затем вызываетthenCompose(Function)для результата. - Параметры:
-
fn— функция, используемая для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом - Возвращает:
- новый CompletionStage
- С версии:
- 12
exceptionallyAsync
default CompletionStage<T> exceptionallyAsync(Function<Throwable, ? extends T> fn, Executor executor)
- Требования к реализации:
- Реализация по умолчанию вызывает
handle(BiFunction), перенаправляя вызов кhandleAsync(BiFunction)при исключении, а затем вызываетthenCompose(Function)для результата. - Параметры:
-
fn— функция, используемая для вычисления значения возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом -
executor— исполнитель, используемый для асинхронного выполнения - Возвращает:
- новый CompletionStage
- С версии:
- 12
exceptionallyCompose
default CompletionStage<T> exceptionallyCompose(Function<Throwable, ? extends CompletionStage<T>> fn)
- Требования к реализации:
- Реализация по умолчанию вызывает
handle(BiFunction), вызывая указанную функцию при исключении, а затем вызываетthenCompose(Function)для результата. - Параметры:
-
fn— функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом - Возвращает:
- новый CompletionStage
- С версии:
- 12
exceptionallyComposeAsync
default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn)
- Требования к реализации:
- Реализация по умолчанию вызывает
handle(BiFunction), перенаправляя вызов кhandleAsync(BiFunction)при исключении, а затем вызываетthenCompose(Function)для результата. - Параметры:
-
fn— функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом - Возвращает:
- новый CompletionStage
- С версии:
- 12
exceptionallyComposeAsync
default CompletionStage<T> exceptionallyComposeAsync(Function<Throwable, ? extends CompletionStage<T>> fn, Executor executor)
- Требования к реализации:
- Реализация по умолчанию вызывает
handle(BiFunction), перенаправляя вызов кhandleAsync(BiFunction)при исключении, а затем вызываетthenCompose(Function)для результата. - Параметры:
-
fn— функция, используемая для вычисления возвращаемого CompletionStage, если этот CompletionStage завершился исключительным образом -
executor— исполнитель, используемый для асинхронного выполнения - Возвращает:
- новый CompletionStage
- С версии:
- 12
toCompletableFuture
CompletableFuture<T> toCompletableFuture()
CompletableFuture, сохраняющий те же свойства завершения, что и эта стадия. Если эта стадия уже является CompletableFuture, данный метод может вернуть саму эту стадию. В противном случае вызов этого метода может быть эквивалентен по эффекту thenApply(x -> x), но возвращать экземпляр типа CompletableFuture.- Возвращает:
- 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/CompletionStage.html