Что значит сказать, что неизменяемые объекты могут быть опубликованы, даже не прибегая к безопасным идиомам публикации?Что делает неизменяемые объекты публикуемыми без использования безопасных методов публикации?
Я прочитал Java Параллелизм на практике (главе 3, Sharing объекты), но до сих пор не в состоянии понять утверждение:
Неизменные объекты могут быть опубликованы через любой механизм.
V/S
Эффективно неизменные объекты должны быть безопасно опубликованы.
Edit: Я был через similar question on SO и ответы, но все еще не в состоянии понять, как неизменное объекты могут быть опубликованы безопасно, потому что есть вероятность того, что поле ссылки на неизменный объект будет рассматриваться как нуль или некоторые устаревшие значения из укрытий от внешнего потока.
Сам неизменяемый объект может быть опубликован безопасно, любое поле, относящееся к нему, не является частью неизменяемого объекта и поэтому не имеет одинаковых гарантий. – Trillian
Они не могут измениться, поэтому вы можете думать о них как о «константах». Для любой константы вы ожидаете, что сможете публиковать без проблем параллелизма. – greedybuddha
@Trillian Но на языке, таком как Java, что такое безопасно опубликованный объект, если ссылка на него по-прежнему устарела? Они должны быть в синхронизации, чтобы сказать, что объект был безопасно опубликован, не так ли? – Geek