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 позволяет управлять и получать результат этой задачи асинхронно.