любая проблема синглтона - PullRequest
2 голосов
/ 30 ноября 2011

Я столкнулся с некоторыми проблемами, используя ленивый экземплярный шаблон синглтона

Ссылка: http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html.

Точно так же, есть ли проблемы в использовании одноэлементного шаблона с ранним созданием экземпляра?

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Это было написано около десяти лет назад. С 2004 года самый простой шаблон Singleton - это использование enum с одним экземпляром.

enum Singleton {
    INSTANCE;
}
2 голосов
/ 30 ноября 2011

Идея, по-видимому, заключается в том, что создание экземпляра синглтона может быть дорогостоящим, поэтому, если это делается рано (и, возможно, для многих синглетонов), это может привести к длительной паузе при запуске приложения, тогда как ленивая инсталяция распространяет задержки и может полностью их избежать, если не всегда нужен синглтон.

Это действительно проблема для значительного числа приложений? Я совершенно уверен, что это не так, и количество постов в блогах и вопросов о ленивых экземплярах синглетонов совершенно несоизмеримо с его практической полезностью. Я также уверен, что все это внимание создало у многих людей впечатление, что именно так должны быть реализованы синглтоны, и заставило их выбирать неоправданно сложное решение в тех местах, где прямолинейный, полужестко созданный экземпляр Синглтона был бы совершенно нормальным.

Так почему же этому вопросу уделяется так много внимания? Я подозреваю, что это отчасти тот факт, что он иллюстрирует некоторые тонкости модели памяти Java, которые имеют отношение к параллельному коду в целом, и частично является игрой smartassery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...