Выбор ответа Junior Потоки и Java Memory Model спрашивают часто обновлено
start и run
Вопрос
Что произойдёт при вызове thread.run() вместо thread.start()?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Код выполнится синхронно в текущем потоке, нового потока не будет. run() это обычный метод: вызов выполняет его в текущем потоке.
Варианты ответа
- Код выполнится синхронно в текущем потоке, нового потока не будетправильный ответ
- Создастся новый поток, как и при
start(), но без имени и приоритета - Будет IllegalThreadStateException, потому что поток ещё не запущен
- Код не выполнится вообще:
run()безstart()ничего не делает
Разбор
run() это обычный метод: вызов выполняет его в текущем потоке. Новый поток запускает только start(), который затем сам вызывает run() в новом потоке. Исключение IllegalThreadStateException бросает повторный start().
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.