Sobes.tech
Назад к вопросам
Junior — Middle
135

Как отличить объекты Future, FutureTask и CompletableFuture по их назначению и особенностям использования?

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

sobes.tech AI

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

FutureTask — это конкретная реализация интерфейса Future и одновременно Runnable. Его можно использовать для запуска задач в отдельном потоке, а также для получения результата. FutureTask можно передать в Executor или запустить вручную.

CompletableFuture — расширенная реализация Future, появившаяся в Java 8. Она поддерживает функциональное программирование и позволяет строить цепочки асинхронных операций с помощью методов вроде thenApply, thenCompose, exceptionally и т.д. Это более мощный и гибкий инструмент для работы с асинхронностью.

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

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