Одиночный рисунок с комбинацией ленивой нагрузки и безопасности нитокJAVA

Программисты JAVA общаются здесь
Anonymous
Одиночный рисунок с комбинацией ленивой нагрузки и безопасности ниток

Сообщение Anonymous »

Я проводил некоторые исследования о синглтоне, особенно в отношении ленивых и нетерпеливых инициализации синглтонов. 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»