Middle
120
questionbank

В чем отличие между интерфейсами Runnable и Callable в Java?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

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

Runnable

  • Метод run(): void run();
  • Не возвращает значение.
  • Не может выбросить проверяемое исключение (те, что наследуются от Exception, кроме RuntimeException).
  • Подходит для задач, которые просто выполняются без возвращения результата.

Callable

  • Метод call(): V call() throws Exception; (где V — тип возвращаемого значения).
  • Возвращает значение (тип указывается в <V>).
  • Может выбросить проверяемое исключение.
  • Часто используется с ExecutorService и Future для асинхронного выполнения задач и получения их результатов.

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

  • Runnable передается в execute(Runnable task) или submit(Runnable task). Метод submit возвращает Future<?>.
  • Callable передается в submit(Callable<T> task). Метод submit возвращает Future<T>.

Пример Runnable:

java

Пример Callable:

java