Выбор ответа Middle Потоки и Java Memory Model обновлено
Что даёт happens-before
Вопрос
Какое из утверждений про happens-before верно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Запись в volatile happens-before последующего чтения этой переменной. JMM перечисляет конкретные правила: порядок программы в одном потоке, отпускание и последующий захват одного монитора, запись и последующее чтение volatile, start() перед действиями потока, действия потока перед возвратом join(),…
Варианты ответа
- Запись в volatile happens-before последующего чтения этой переменнойправильный ответ
- Любые две операции в программе связаны happens-before по времени выполнения
- Запуск потока
t.start()happens-before только после вызоваt.join() - Захват монитора A happens-before отпускания монитора B в другом потоке
Разбор
JMM перечисляет конкретные правила: порядок программы в одном потоке, отпускание и последующий захват одного монитора, запись и последующее чтение volatile, start() перед действиями потока, действия потока перед возвратом join(), транзитивность. Физическое время ничего не гарантирует. Мониторы разных объектов отношения не создают.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что гарантирует volatile
Следующий вопрос
Безопасная публикация неизменяемого объекта