Многопоточность trainee
В чём разница start() и run() у Thread?
Ответ
start() — создаёт новый поток ОС и в нём вызывает run(). run() напрямую — это обычный метод, выполнится В ТЕКУЩЕМ потоке. Это любимая ловушка на собесах. Запомни: «start запускает новый, run просто исполняет в этом же».
Разбор: start() создаёт новый поток ОС и уже в нём вызывает run(), обеспечивая параллельное выполнение. Прямой вызов run() — это обычный вызов метода, который исполняется в текущем потоке, без создания нового. Ловушки — приписать параллельность вызову run(), отложить запуск до join() или перепутать, что именно бросает IllegalThreadStateException (это повторный start(), а не run()).
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.