Назад к вопросам
Middle
229
questionbank
Что такое интерфейс Callable в Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Callable — это интерфейс из пакета java.util.concurrent, предназначенный для выполнения задач, которые могут возвращать результат и выбрасывать исключения.
Основные отличия от Runnable:
| Признак | Runnable | Callable |
|---|---|---|
| Возвращаемое значение | void |
Generic тип V |
| Исключения | Не может выбрасывать checked исключения (только RuntimeException) | Может выбрасывать checked исключения |
| Метод | run() |
call() |
Метод call() интерфейса Callable имеет сигнатуру:
// Возвращает результат типа V
// Может выбросить исключение типа Exception
V call() throws Exception;
Для выполнения задачи, реализованной интерфейсом Callable, обычно используется ExecutorService. Результат выполнения можно получить с помощью объекта Future, который возвращается методами submit() класса ExecutorService.
Пример использования:
// Пример Callable, который суммирует два числа
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
public class SumCallable implements Callable<Integer> {
private final int a;
private final int b;
public SumCallable(int a, int int b) {
this.a = a;
this.b = b;
}
@Override
public Integer call() throws Exception {
// Выполнение задачи
return a + b;
}
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
// Создание экземпляра Callable
Callable<Integer> task = new SumCallable(5, 3);
// Отправка задачи на выполнение и получение Future
Future<Integer> future = executor.submit(task);
// Получение результата (блокирующая операция)
int result = future.get();
System.out.println("Результат: " + result); // Вывод: Результат: 8
executor.shutdown();
}
}
Callable предоставляет более гибкий механизм выполнения задач по сравнению с Runnable, особенно когда требуется получить результат выполнения или обработать специфические исключения.