TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #123 6.09K
Что такое CompletableFuture ?
Спросят с вероятностью 12%

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

Основные возможности:

1️⃣Асинхронное выполнение задач: Можно использовать для асинхронного выполнения вычислений без необходимости явного создания потоков или использования пулов потоков.

2️⃣Обработка результатов и исключений: Предоставляет методы для обработки результатов асинхронных операций и исключений, возникших во время их выполнения. Это делает код более чистым и понятным.

3️⃣Комбинирование асинхронных задач: Позволяет объединять несколько асинхронных задач последовательно или параллельно, формируя цепочки вычислений или объединяя результаты.

4️⃣Отсутствие блокировки: Методы get() и join() позволяют дождаться завершения асинхронной операции, но CompletableFuture также предлагает неблокирующие методы для реакции на завершение операций, такие как thenApply(), thenAccept(), thenCompose() и whenComplete().

Пример:
CompletableFuture.supplyAsync(() -> {
// Имитация длительной операции
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
throw new IllegalStateException(e);
}
return "Результат асинхронной операции";
})
.thenApply(result -> {
// Преобразование результата
return result.toUpperCase();
})
.thenAccept(result -> {
// Обработка результата
System.out.println(result);
})
.exceptionally(ex -> {
// Обработка исключения
System.out.println("Произошла ошибка: " + ex.getMessage());
return null;
});


В этом примере supplyAsync() используется для асинхронного выполнения задачи, thenApply() преобразует результат, thenAccept() обрабатывает его, а exceptionally() обрабатывает возможные исключения.

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

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1715 вопроса на Java разработчика. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
  • 👍 17
  • 🔥 5
  • ❤ 1
More from @easy_java_ru
  1. Oct 12, 2026🤔 Жизненный цикл сервлетов? 1. Загрузка и инициализация (init); 2. Обработка запроса (ser…
  2. Oct 12, 2026🤔 Как остановить поток? Остановить поток в Java можно несколькими способами, но важно пом…
  3. Oct 11, 2026🤔 Какой класс позволяет читать данные из входного байтового потока в формате примитивных…
  4. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  5. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  6. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →