Runnable — это интерфейс в Java?

«Runnable — это интерфейс в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, java.lang.Runnable — это функциональный интерфейс. Он определяет контракт для задачи, которая может быть выполнена потоком (Thread).

Ключевые характеристики:

  • Содержит единственный абстрактный метод void run().
  • Не принимает параметров и не возвращает результат.
  • Является основой для многопоточности и параллельного выполнения задач.
  • Может быть представлен лямбда-выражением или ссылкой на метод.

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

  1. Создание потока с лямбдой:

    Runnable task = () -> {
        System.out.println("Задача выполняется в потоке: " + Thread.currentThread().getName());
    };
    new Thread(task).start();
  2. Передача в ExecutorService:

    ExecutorService executor = Executors.newFixedThreadPool(2);
    executor.submit(() -> System.out.println("Асинхронное выполнение"));
    executor.shutdown();

Важно: Для задач, которые должны возвращать результат или бросать проверяемые исключения, следует использовать интерфейс Callable<V>.