Я читал эту статью о "двойной проверке блокировки" и из основной темы статьи мне было интересно, почему на некоторых в статье автор использует следующий Идиом:
Листинг 7. Попытка решить проблему нестандартной записи
public static Singleton getInstance() { if (instance == null) { synchronized(Singleton.class) { //1 Singleton inst = instance; //2 if (inst == null) { synchronized(Singleton.class) { //3 inst = new Singleton(); //4 } instance = inst; //5 } } } return instance; }
И мой вопрос: Есть ли причина для синхронизации дважды кода с той же блокировкой? Есть ли в этом цель?
Большое спасибо заранее.