Я читаю книгу Java Concurrency in Practice.
При чтении главы о JMM говорится:
JMM определяет частичное упорядочение, называемое «происходит до» для всех действий в программе. Чтобы гарантировать, что поток, выполняющий действие B, может видеть результаты действия A (независимо от того, происходят ли A и B в разных потоках), должна существовать связь между A и B.
Однако я не могу использовать какое-либо правило «происходит до» для получения правила «Безопасность инициализации»:
Безопасность инициализации гарантирует, что для правильно созданных объектов все потоки будут видеть правильные значения конечных полей, которые были установлены конструктором, независимо от того, как объект опубликован.
Можем ли мы использовать правила «происходит до» для получения правила «Безопасность инициализации», или эти две концепции просто абстракция одного уровня?