Sobes.tech
Назад к вопросам
Junior — Middle
67

Чем отличается интерфейс Runnable от интерфейса Callable в Java?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Интерфейс Runnable в Java представляет задачу, которая может быть выполнена в отдельном потоке, но не возвращает результата и не может выбрасывать проверяемые исключения. Его метод:

void run();

Интерфейс Callable<V> похож, но он возвращает результат типа V и может выбрасывать исключения:

V call() throws Exception;

Основные отличия:

  • Runnable не возвращает результат, Callable — возвращает.
  • Callable может выбрасывать проверяемые исключения.
  • Callable используется с ExecutorService и возвращает Future<V>, что позволяет получить результат асинхронно.

Пример использования Callable:

Callable<Integer> task = () -> {
    // вычисления
    return 123;
};
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(task);
Integer result = future.get();
executor.shutdown();