Показаны сообщения с ярлыком singleton. Показать все сообщения
Показаны сообщения с ярлыком singleton. Показать все сообщения

пятница, 10 июля 2015 г.

Идеальный singleton

Не буду рассказывать, что такое singleton и для чего он нужен. Расскажу про то, как его писать. Всегда склонялся к варианту double check, но после статьи про текущую модель памяти в java, мир для меня перестал быть прежним. Оказывается, volatile довольно затратная операция и немного лучше synchronized. Наилучшим же вариантом с ленивой инициализацией будет следующий код:
   public class Singleton{
      private Singleton(){};
      
      public Singleton getInstance(){
          return SingletonCreator.instance;
      }
      private static class SingletonCreator{
          public static final Singleton instance = new Singleton();
      }      
   }