Назад к вопросам
СБЕР
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.