РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1070 of 1163 menu

Метод thenApply

Метод thenApply класса CompletableFuture применяет заданную функцию к результату завершенной асинхронной задачи и возвращает новый объект CompletableFuture, содержащий преобразованное значение. В первый параметр мы передаем функцию типа Function, которая принимает результат исходной задачи и возвращает новое значение. Метод не блокирует поток, а выполняется асинхронно после завершения исходного CompletableFuture.

Если исходный CompletableFuture завершился с исключением, то переданная функция не вызывается, а исключение пробрасывается в результирующий CompletableFuture.

Синтаксис

CompletableFuture<U> thenApply(Function<? super T, ? extends U> fn)

Пример

Давайте создадим асинхронную задачу, которая возвращает число, а затем с помощью thenApply преобразуем это число в строку:

import java.util.concurrent.CompletableFuture; public class Main { public static void main(String[] args) { CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> 5); CompletableFuture<String> res = future.thenApply(num -> "value: " + num); System.out.println(res.join()); } }

Результат выполнения кода:

"value: 5"

Пример

Давайте применим цепочку из нескольких thenApply, чтобы последовательно преобразовать результат:

import java.util.concurrent.CompletableFuture; public class Main { public static void main(String[] args) { CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> 5); CompletableFuture<Integer> res = future .thenApply(num -> num * 2) .thenApply(num -> num + 3); System.out.println(res.join()); } }

Результат выполнения кода:

13

Пример

Давайте преобразуем строку в ее длину с помощью thenApply:

import java.util.concurrent.CompletableFuture; public class Main { public static void main(String[] args) { CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "abcde"); CompletableFuture<Integer> res = future.thenApply(str -> str.length()); System.out.println(res.join()); } }

Результат выполнения кода:

5

Смотрите также

  • класс CompletableFuture,
    который представляет асинхронную задачу
  • метод supplyAsync,
    который создает асинхронную задачу с результатом
  • метод thenCompose,
    который связывает две асинхронные задачи
  • метод thenAccept,
    который потребляет результат без возврата значения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить