В чём разница start() и run() у Thread?

Ответ

start() — создаёт новый поток ОС и в нём вызывает run(). run() напрямую — это обычный метод, выполнится В ТЕКУЩЕМ потоке. Это любимая ловушка на собесах. Запомни: «start запускает новый, run просто исполняет в этом же».

Разбор: start() создаёт новый поток ОС и уже в нём вызывает run(), обеспечивая параллельное выполнение. Прямой вызов run() — это обычный вызов метода, который исполняется в текущем потоке, без создания нового. Ловушки — приписать параллельность вызову run(), отложить запуск до join() или перепутать, что именно бросает IllegalThreadStateException (это повторный start(), а не run()).

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться