Sobes.tech
Junior — Middle

Jak odróżnić obiekty Future, FutureTask i CompletableFuture pod względem ich przeznaczenia i cech użytkowania?

sobes.tech AI

Odpowiedź od 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);
});