Выбор ответа Junior Потоки и Java Memory Model обновлено
Исключение в потоке
Вопрос
В потоке, запущенном из main, вылетело необработанное RuntimeException. Что будет с main?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Main продолжит работу, умрёт только этот поток. Необработанное исключение завершает только свой поток: стектрейс печатает UncaughtExceptionHandler по умолчанию, остальные потоки работают дальше.
Варианты ответа
- Main продолжит работу, умрёт только этот потокправильный ответ
- Main тоже завершится с этим исключением
- Исключение будет проброшено в main при следующем вызове любого метода
- JVM завершится целиком
Разбор
Необработанное исключение завершает только свой поток: стектрейс печатает UncaughtExceptionHandler по умолчанию, остальные потоки работают дальше. В main оно не передаётся (в отличие от Future.get, который завернёт его в ExecutionException). JVM завершается, когда закончились все не-daemon потоки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.