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

Метод thenAccept

Метод thenAccept класса CompletableFuture используется для выполнения действия над результатом асинхронной операции. В отличие от метода thenApply, который возвращает новое значение, метод thenAccept ничего не возвращает (возвращает CompletableFuture<Void>). В первый параметр мы передаем функцию-потребитель (Consumer), которая принимает результат предыдущей операции и выполняет над ним какие-либо действия, например, выводит в консоль. Второй параметр опциональный - это Executor, в котором будет выполняться переданная функция.

Синтаксис

completableFuture.thenAccept(action) completableFuture.thenAccept(action, executor)

Пример

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

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

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

"Result: 5"

Пример

Давайте обработаем строку "abcde", полученную асинхронно, и выведем её длину:

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

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

"Length: 5"

Пример

Давайте посмотрим, что метод thenAccept возвращает CompletableFuture<Void>, поэтому получить из него значение нельзя, но можно дождаться завершения:

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

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

"Value: 12345" "Done: null"

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

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