Sobes.tech
Back to questions
Junior — Middle
54

Объясните концепцию объекта Future и его использование в программировании

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

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

Основные моменты:

  • Future предоставляет методы для проверки завершения задачи (isDone()), отмены (cancel()), и получения результата (get()).
  • Метод get() блокирует текущий поток до тех пор, пока задача не завершится и результат не станет доступен.

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

import java.util.concurrent.*;

ExecutorService executor = Executors.newSingleThreadExecutor();

Callable<String> task = () -> {
    Thread.sleep(1000); // имитация долгой операции
    return "Результат";
};

Future<String> future = executor.submit(task);

// Можно выполнять другие действия здесь

try {
    String result = future.get(); // блокируется, пока задача не завершится
    System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
}

executor.shutdown();

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