Назад к вопросам
Middle
409
questionbank
Что такое интерфейс Callable в Java?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Callable — это функциональный интерфейс для задач, которые выполняются в другом потоке и должны вернуть результат. В отличие от Runnable, он может возвращать значение и выбрасывать проверяемые исключения. Обычно используется вместе с ExecutorService через Future.
Определение:
Callable<V> — интерфейс из java.util.concurrent, который описывает задачу с методом V call() throws Exception.
Его применяют, когда нужно запустить вычисление асинхронно, получить результат и корректно обработать ошибки.
В отличие от Runnable, Callable не обязан быть void и может сообщать о проблемах через Exception.
Пример использования:
import java.util.concurrent.*;
public class Example {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<Integer> task = () -> 2 + 3;
Future<Integer> future = executor.submit(task);
Integer result = future.get();
System.out.println("Result: " + result);
executor.shutdown();
}
}
Пояснение кода:
- Создаётся
ExecutorService, который будет выполнять задачу в отдельном потоке. - Определяется
Callable<Integer>, который возвращает число5. - Метод
submit()принимаетCallableи возвращаетFuture<Integer>. future.get()блокирует текущий поток, пока задача не завершится, и отдаёт результат.- После завершения работы пул потоков закрывается через
shutdown().
Ключевые моменты:
Callableиспользуется для задач с результатом,Runnable— без результата.- Метод интерфейса:
V call() throws Exception. Callableобычно запускают черезExecutorService.submit().- Результат выполнения получают через
Future. - Можно передавать проверяемые исключения, что удобно для задач с обработкой ошибок.
- Часто применяется в многопоточности, асинхронных вычислениях и фоновых задачах.