Согласно JCP (16.2.2. Безопасная публикация):
Эта гарантия до того, как это произойдет, на самом деле более надежное обещание наглядности и порядка, чем безопасная публикация .Когда X безопасно публикуется из A в B, безопасная публикация гарантирует видимость состояния X, но не состояния других переменных, которые могли коснуться.Но если A помещает X в очередь - до того, как B извлекает X из этой очереди, B не только видит X в состоянии, в котором A его покинул (при условии, что X не был впоследствии изменен A или кем-либо еще), но B видитвсе, что А делал перед передачей (опять же, с учетом того же предостережения)
Мне интересно, когда безопасная публикация может быть без события до того, т.е. без использования volatile / atomics или синхронизации (иличерез фреймворки, такие как AQS, которые используют любой из перечисленных внутри)?
Один случай - это заключительные поля в неизменяемом объекте, где вы можете опубликовать его без каких-либо дополнительных шагов.
Есть лилюбые другие случаи?
UPD: перечитайте 3.5.3.Safe Publication Idioms, другой случай - «Инициализация ссылки на объект из статического инициализатора».Кажется, теперь это все варианты.