Thread и Runnable

В Java поток описывают два связанных типа:

  • Thread — сам поток выполнения. У него есть start() (запустить) и run() (код, который выполнится).
  • Runnable — интерфейс с одним методом run(). Это просто «что нужно сделать», без знания о потоках. Thread берёт Runnable и выполняет его в отдельном потоке.
Runnable task = () -> System.out.println("работаю");   // что делать
Thread t = new Thread(task);                            // в каком потоке
t.start();

Разделение удобно тем, что одну и ту же задачу (Runnable) можно выполнить и в Thread, и через пул потоков (ExecutorService) — она не привязана к конкретному способу запуска.

🎤 Закрыл тему, если можешь объяснить:
• чем `Thread` отличается от `Runnable` и как они связаны.