Интерфейс Callable<V> в Java представляет собой задачу, которая может быть выполнена в отдельном потоке и возвращает результат типа V. В отличие от интерфейса Runnable, который не возвращает результата и не может выбрасывать проверяемые исключения, Callable позволяет вернуть значение и бросать исключения.
Объясните концепцию интерфейса Callable и его назначение в программировании.
Интерфейс CallableV в Java представляет собой задачу, которая может быть выполнена в отдельном потоке и возвращает результат типа V.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Интерфейс Callable<V> в Java представляет собой задачу, которая может быть выполнена в отдельном потоке и возвращает результат типа V. В отличие от интерфейса Runnable, который не возвращает результата и не может выбрасывать проверяемые исключения, Callable позволяет вернуть значение и бросать исключения.
Это особенно полезно при работе с многопоточностью и асинхронным выполнением задач, например, при использовании ExecutorService для запуска задач и получения их результатов через объекты Future.
Пример:
import java.util.concurrent.Callable;
public class SumTask implements Callable<Integer> {
private int a, b;
public SumTask(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public Integer call() throws Exception {
return a + b;
}
}
Затем эту задачу можно передать в ExecutorService и получить результат:
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(new SumTask(5, 10));
Integer result = future.get(); // result будет 15
executor.shutdown();