Sobes.tech
Назад к вопросам
Junior — Middle
78

Какое отличие между вызовом метода run и использованием метода start при работе с интерфейсом Runnable?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Метод run() интерфейса Runnable содержит код, который должен выполняться в отдельном потоке, но вызов run() напрямую — это обычный вызов метода в текущем потоке, без создания нового потока.

Метод start() класса Thread создает новый поток и вызывает внутри него метод run(). Таким образом, чтобы запустить код в новом потоке, нужно создать объект Thread, передать ему Runnable и вызвать start(), а не run() напрямую.

Пример:

Runnable task = () -> System.out.println("Выполняется в потоке " + Thread.currentThread().getName());

// Вызов run() напрямую — выполняется в текущем потоке
task.run();

// Запуск в новом потоке
Thread thread = new Thread(task);
thread.start();