Как отличить объекты Future, FutureTask и CompletableFuture по их назначению и особенностям использования?
Answer from AI
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);
});