Единственное различие LazyThreadSafetyMode SYNCHRONIZED от PUBLICATION - это количество запусков метода инициализации? Оба варианта thread safe, оба запомнят и вернут каждому потоку один и тот же результат?
...когда может пригодиться то, что PUBLICATION дергает метод инициализации несколько раз? В чем смысл?