Sobes.tech
Back to questions
Junior — Middle
68

Как взаимодействуют интерфейсы Callable и Future в Java для асинхронных операций?

Companies where asked
ООО Антара

Answer from AI

sobes.tech AI

В Java интерфейс Callable представляет задачу, которая возвращает результат и может выбрасывать исключения. Он похож на Runnable, но с возможностью возвращать значение.

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

Вместе Callable и Future используются для выполнения задач асинхронно с возможностью получить результат позже. Например, через ExecutorService можно отправить Callable на выполнение и получить Future:

ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<Integer> task = () -> {
    // какая-то длительная операция
    Thread.sleep(1000);
    return 42;
};
Future<Integer> future = executor.submit(task);

// ... в другом месте кода
if (future.isDone()) {
    Integer result = future.get();
    System.out.println("Результат: " + result);
}
executor.shutdown();

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