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

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

Компании, где спрашивали
СБЕРСБЕР
Y_lab development
Северсталь-ИфокомСеверсталь-Ифоком

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

sobes.tech AI

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

  • Runnable:

    • Метод run() не возвращает результат и не может выбрасывать проверяемые исключения.
    • Используется, когда задача не требует возвращать значение.
    • Пример:
      Runnable task = () -> System.out.println("Выполнение задачи");
      new Thread(task).start();
      
  • Callable<V>:

    • Метод call() возвращает результат типа V и может выбрасывать исключения.
    • Используется, когда нужно получить результат выполнения задачи.
    • Обычно применяется с ExecutorService и Future.
    • Пример:
      Callable<Integer> task = () -> {
          // вычисления
          return 123;
      };
      ExecutorService executor = Executors.newSingleThreadExecutor();
      Future<Integer> future = executor.submit(task);
      Integer result = future.get();
      executor.shutdown();
      

Таким образом, Callable расширяет возможности Runnable, позволяя возвращать результат и обрабатывать исключения.