Sobes.tech
Назад к вопросам
Senior
6

Для чего нужен интерфейс Future? Чем отличается CompletableFuture?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Интерфейс Future в Java представляет собой результат асинхронной операции, который может быть получен в будущем. Он позволяет проверить, завершилась ли операция, отменить её или получить результат, блокируя текущий поток, если результат ещё не готов.

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

Основные отличия:

  • Future не поддерживает методы для композиции или обработки результата без блокировки.
  • CompletableFuture предоставляет методы для асинхронного выполнения, цепочек вызовов (thenApply, thenCompose), обработки ошибок (exceptionally), и может быть завершён вручную.

Пример использования CompletableFuture:

CompletableFuture.supplyAsync(() -> {
    // Долгая операция
    return "Результат";
}).thenApply(result -> {
    // Обработка результата
    return result.toUpperCase();
}).thenAccept(finalResult -> {
    System.out.println(finalResult);
});

Таким образом, CompletableFuture более гибок и мощен для работы с асинхронным кодом по сравнению с базовым Future.