Sobes.tech
Junior — Middle

Leg uit wat de verschillen zijn tussen de interfaces Callable en Runnable in Java en wanneer het beter is om elk van hen te gebruiken.

sobes.tech AI

Antwoord van 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.