Я проводил некоторые исследования о синглтоне, особенно в отношении ленивых и нетерпеливых инициализации синглтонов. Br />public class Singleton
{
//initialzed during class loading
private static final Singleton INSTANCE = new Singleton();
//to prevent creating another instance of Singleton
private Singleton(){}
public static Singleton getSingleton(){
return INSTANCE;
}
}
< /code>
Но, как показано выше, это нетерпеливая инициализация, и безопасность потока остается в JVM
, но теперь я хочу иметь такой же шаблон, но с ленивой инициализацией. < /p>
Так что я приду к этому подходу: < /p>
public final class Foo {
private static class FooLoader {
private static final Foo INSTANCE = new Foo();
}
private Foo() {
if (FooLoader.INSTANCE != null) {
throw new IllegalStateException("Already instantiated");
}
}
public static Foo getInstance() {
return FooLoader.INSTANCE;
}
}
< /code>
, как показано выше, так как строка < /p>
private static final Foo INSTANCE = new Foo();
< /code>
выполняется только тогда, когда на самом деле используется загрузок класса, он заботится о ленивом экземпляре и гарантированно является ли он безопасным. < /p>
это правильно?
Подробнее здесь: https://stackoverflow.com/questions/157 ... ead-safety
Одиночный рисунок с комбинацией ленивой нагрузки и безопасности ниток ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Бесконечная нагрузка скелетных погрузчиков с событием нагрузки/@нагрузки
Anonymous » » в форуме Javascript - 0 Ответы
- 48 Просмотры
-
Последнее сообщение Anonymous
-