Вы можете позволить загрузчику классов выполнить его maigc и инициализировать статическую переменную при запуске - это гарантированно сработает, потому что загрузчик классов гарантирует однопоточное поведение.
Если вы хотите инициализировать экземпляр лениво и в основномlockfree, то нет, вы должны сделать это таким образом и убедиться, что вы используете Java> = 1.5
Редактировать: посмотрите решение BalusC, которое использует загрузчик классов немного более разумно.Обратите внимание, что все это работает, потому что загрузчик классов инициализирует классы лениво - то есть они загружаются только при первом обращении - и потому что внутренние классы обрабатываются так же, как обычные классы в этом отношении (просто потому, что вы загружаете внешний класс, это не означает, что внутреннийкласс загружен)