Одиночный рисунок с комбинацией ленивой нагрузки и безопасности ниток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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»