Стек: Java 11, многопоточность, Java Memory Model (JMM)
Цель: понять, что такое happens-before, как он обеспечивает видимость и упорядочение, и почему volatile и блокировки “работают”. В многопоточной Java-программе изменения одного потока могут быть невидимы другому из-за: Без гарантий видимости и упорядочения вы можете получить: 💡 Java Memory Model (JMM) решает эту проблему через правила happens-before — формальный контракт между потоками. Happens-before — это отношение “происходит до” между двумя действиями в программе.
Если действие A happens-before действия B, то: Изменения, сделанные в A, гарантированно видны в B. Это — основа безопасности в многопоточных программах без synchronized. Java Language Specification (JLS) определяет несколько встроенных правил happens-before: Внутри одного потока каждое действие happens-before всех последующих действий (согласно порядку в коде). // В одном потоке: int x = 1; // A int y = 2; // B // A happens-before B Разблокировка монитора (unlo