Выбор ответа Middle Потоки и Java Memory Model обновлено

Что даёт happens-before

Вопрос

Какое из утверждений про happens-before верно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Запись в volatile happens-before последующего чтения этой переменной. JMM перечисляет конкретные правила: порядок программы в одном потоке, отпускание и последующий захват одного монитора, запись и последующее чтение volatile, start() перед действиями потока, действия потока перед возвратом join(),…

Варианты ответа

  1. Запись в volatile happens-before последующего чтения этой переменнойправильный ответ
  2. Любые две операции в программе связаны happens-before по времени выполнения
  3. Запуск потока t.start() happens-before только после вызова t.join()
  4. Захват монитора A happens-before отпускания монитора B в другом потоке

Разбор

JMM перечисляет конкретные правила: порядок программы в одном потоке, отпускание и последующий захват одного монитора, запись и последующее чтение volatile, start() перед действиями потока, действия потока перед возвратом join(), транзитивность. Физическое время ничего не гарантирует. Мониторы разных объектов отношения не создают.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме