Во время чтения «Java Параллелизм на практике», я наткнулся на следующее -Действительно ли волатильная ссылка действительно гарантирует, что внутреннее состояние объекта видимо для других потоков?
Чтобы опубликовать объект безопасно, как ссылка на объект и состояние объекта должны быть сделаны видимыми для других потоков одновременно. Правильно построенный объект можно безопасно опубликовать:
- Инициализация ссылки на объект из статического инициализатора;
- Хранение ссылки на него в поле volatile или AtomicReference;
- Хранение ссылки на него в конечном поле правильно построенного объекта; или
- Хранение ссылки на него в поле, которое должным образом защищено блокировкой.
Мой вопрос - это второй вопрос? То есть Могу ли я сделать состояние объекта видимым для других потоков, просто сохраняя ссылку на него во взрывоопасной ссылке? Если нет, я неправильно читаю вышеуказанные пункты?
Вы понимаете, что означает «безопасно опубликованное» в этом контексте? –
http://stackoverflow.com/q/801993/139010 –
По моему мнению (с удовольствием исправлено) это означает, что поток чтения должен иметь возможность видеть правильные значения членов этого объекта (правильные значения - значения, которые были назначены членам в конструкторе этого объекта) –