2010-12-07 3 views
1

Как инициализация ссылки на объект из статического инициализатора гарантирует безопасную публикацию?Статические инициализаторы и безопасная публикация

+3

Классовая нагрузка неявно синхронизирована. –

+0

На самом деле ... это инициализация класса, синхронизированная. Это может произойти «в то же время», что и классовая загрузка, или это может произойти лениво. –

ответ

3

Использование статического инициализатора зачастую является самым простым и безопасным способом публиковать объекты, которые могут быть статически сконструированные:

public static Holder holder = new Holder(42); 

Статические инициализаторы выполняются в JVM во время инициализации класса; из-за внутренней синхронизации в JVM этот механизм гарантированно безопасно публикует любые объекты, инициализированные таким образом [JLS 12.4.2].

Смежные вопросы