Если честно, то я так и думал. Вот только сериализация в синглтонах обычно только проблемы приносит=) Ну и, наверно, я редко сталкивался с атаками на мои синглтоны..хотя, всегда лучше перебдеть, чем недобдеть=)
Чтож, очень обидно, что вы начинаете спор не прочитав статью внимательно. Как и ваше утверждение на тему многопоточности 2 и 3 варианов. Так и здесь, я написал, что Double-checked locking в своем оригинальном варианте не работает, но начиная с Java 5, починили модификатор volatile, и если его использовать, то Double-checked locking заработает. Жаль, что вы читаете по диагонали. Спор с вами мне стал не интересен, если хотите задавать вопросы - пожалуйста, но спорить с вами более я не буду.
я не понял вашего примера, но могу смело вам сказать, что вы не правы. В вариантах 2,3 объект инициализируется класслоадером, поэтому null никто не получит.
И уж точно непричем здесь Solaris и Windows=) Я согласен, что есть некороые различия в виртуальных машинах, но не на таком уровне.
Однопоточность обсуждается в одном варианте и одномн абзаце. Куда уж короче.
PS использовать синхронизацию на get() не имееет никакого смысла. Пора менять концепцию=)
PSS но, всеравно спасибо за позитивно-конструктивный комментарий
я думаю, что все-же лишне, тк метод clone() является protcted в Object. И раз уж всеравно, в основном, все Синглтоны будут final, то перегружать метод clone() не имеет смысла.
Будет время - напишу. Чем вас не устраивает туториал, который находится на оффсайте Hibernate? Или этот, например, если вам нужно на русском языке http://www.javaportal.ru/java/articles/h….
Нет, у меня все картинки в хорошем качестве. Видимо хабр, подгоняя картинки под какие-то свои размеры, слегка растягивает их, тем самым вызывает эффект смазывания.
моя рыдал
enum Singleton {
INSTANCE;
public static Singleton getInstance() { return INSTANCE; }
}
public static Singleton getInstance() { return INSTANCE; }
строчка лишняя имхо.
Если уж enum , то Singleton.INSTANCE
И уж точно непричем здесь Solaris и Windows=) Я согласен, что есть некороые различия в виртуальных машинах, но не на таком уровне.
PS использовать синхронизацию на get() не имееет никакого смысла. Пора менять концепцию=)
PSS но, всеравно спасибо за позитивно-конструктивный комментарий