Sobes.tech
Back to questions
Junior — Middle
75

В чем отличие между интерфейсами Runnable и Callable в Java, и как их используют?

Companies where asked
СБЕРСБЕР
МТСМТС
Формат кодаФормат кода
Северсталь-ИфокомСеверсталь-Ифоком

Answer from AI

sobes.tech AI

Интерфейсы Runnable и Callable используются для выполнения задач в отдельных потоках, но имеют ключевые отличия:

  • Runnable не возвращает результат и не может выбрасывать проверяемые исключения. Метод run() возвращает void.
  • Callable<V> возвращает результат типа V и может выбрасывать исключения. Метод call() возвращает значение.

Использование:

// Runnable
Runnable task = () -> System.out.println("Выполнение задачи");
new Thread(task).start();

// Callable
Callable<Integer> taskWithResult = () -> {
    // какая-то логика
    return 123;
};
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<Integer> future = executor.submit(taskWithResult);
Integer result = future.get();
executor.shutdown();

Callable удобен, когда нужно получить результат из потока или обработать исключения.