Sobes.tech
Junior — Middle
92

Explica diferențele dintre interfețele Callable și Runnable în Java și când este preferabil să le folosești pe fiecare.

Companiile au fost întrebate
ООО Ренью

Răspuns de la AI

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 42;
      };
      ExecutorService executor = Executors.newSingleThreadExecutor();
      Future<Integer> future = executor.submit(task);
      Integer result = future.get();
      executor.shutdown();
      

Когда использовать:

  • Если нужна простая задача без результата — Runnable.
  • Если требуется результат или обработка исключений — Callable.