Sobes.tech
Back to questions
Junior — Middle
55

В чем заключается роль интерфейсов Callable и Runnable в Java, и какой класс реализует эти интерфейсы?

Answer from AI

sobes.tech AI

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

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

Класс Thread реализует интерфейс Runnable, что позволяет создавать потоки, выполняющие код из метода run().

Пример использования Callable с ExecutorService:

ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<Integer> task = () -> {
    // Некоторая вычислительная задача
    return 123;
};
Future<Integer> future = executor.submit(task);
Integer result = future.get();
executor.shutdown();