На этот вопрос уже есть ответ здесь:
private volatile static Singleton uniqueInstance
Почему в синглтоне при использовании метода двойной блокировки для синхронизации один экземпляр объявляется как volatile? Могу ли я добиться той же функциональности, не объявляя ее изменчивой?