Модель памяти Java: близкие контакты третьей степени
Формальную модель памяти Java, уникальный инструмент, позволяющий писать на Java доказуемо корректные многопоточные программы, практически никто не понимает и не умеет использовать в полной мере. В лучшем случае люди помнят про нотацию happens-before, но на практике просто используют полдюжины «как надо» и «как не надо» делать, в худшем случае вообще полагаются на ересь вроде «volatile store выполняет flush в глобальную память».
Для такого положения дел есть свои причины: авторы JMM как будто специально старались сформулировать ее таким образом, чтоб без поллитры рабочему человеку было не разобраться. Конечно, за 50 минут мы вряд ли успеем всё понять, но, надеюсь, вы сможете посмотреть на JMM другими глазами.