Вопрос проверяет знание формальных правил Java Memory Model, которые задают гарантии видимости и порядка между потоками.
Короткий ответ
Отношение happens-before формируется набором строго определённых правил.
К ним относятся синхронизация через synchronized, volatile, запуск и завершение потоков.
Также учитываются операции с final полями и транзитивность.
Эти правила определяют, какие изменения памяти гарантированно видны.
Без них многопоточный код не имеет формальной корректности.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.