После прочтения " Java на практике" и " OSGI на практике" Я нашел конкретную тему очень интересной; Безопасная публикация. Ниже приведено описание JCIP:
Чтобы безопасно опубликовать объект, одновременно ссылка на объект и состояние объекта должна быть видимой для других потоков одновременно. Правильно построенный объект можно безопасно опубликовать:
- Инициализация ссылки на объект из статического инициализатора.
- Сохранение ссылки на него в поле volatile.
- Сохранение ссылки на это в конечном поле.
- Сохранение ссылки на него в поле, которое должным образом защищено (синхронизированной) блокировкой.
Мой первый вопрос: сколько java-разработчиков знают об этом (проблема)? Сколько реальных Java-приложений действительно следуют за этим, и действительно ли это настоящая проблема? У меня такое чувство, что 99% реализованных JVM там не являются "злом", т.е. Нить не гарантируется (на самом деле ее практически (практически) "невозможно" ) видеть устаревшие данные только потому, что эта ссылка не соответствует "безопасная идиома публикации" выше.