在Java中早期初始化Singleton类是什么意思

时间:2013-09-28 15:20:42

标签: java singleton lifecycle

我不太清楚Singleton类的早期初始化这个术语是什么意思。理解Singleton类的生命周期也很有帮助。

4 个答案:

答案 0 :(得分:6)

Lazy initialization表示在第一次使用对象之前不会初始化对象。

Early initialization只是反向,你在类加载时预先初始化单例。

有一些方法可以进行早期初始化,一种方法是将您的单例声明为static

以下为例:

public class SingletonClassEarly {
    private static SingletonClassEarly sce = new SingletonClassEarly();
    private SingletonClassEarly() {} // make it private

    public static SingletonClassEarly getInstance() {
        return sce;
    }
}

根据生命周期,在JVM启动后以及初始化类时加载此单例。它在关闭/退出时被JVM卸载。

答案 1 :(得分:3)

Lazy Initalizaion

 class SingletonClass {

     private static SingletonClass object;
     private SingletonClass () {} 
     public static SingletonClass getInstance(){
        if(object == null){
            object= new SingletonClass (); //Lazy Initalizaion 
        }
        return object;
    }
 }

早期初始化

  class SingletonClass {

     private static SingletonClass object = new SingletonClass (); //Early initialization
     private SingletonClass () {} 

     public static SingletonClass getInstance(){
        return object;
    }
 }

答案 2 :(得分:0)

通常在单身人士这是你看到的

 private static YouClass  singleTon ;

--

--

    public static YouClass getInstance(){
            if(singleTon  == null){
                singleTon  = new YouClass();
            }
            return singleTon  ;
        }

在这种情况下,当您第一次调用getInstance()时,只会创建YouClass实例。

早期初始化,这意味着

在你的课堂上

  private static YouClass singleTon = new YouClass();

在声明自己的同时创建实例。

Singleton pattern wiki ,阅读类型,

  • 延迟初始化

  • 急切初始化

  • 静态块初始化

答案 3 :(得分:0)

感谢大家的解释。这有助于回答我的问题。

我还发现了一些有用的博客文章,其中详细介绍了不同方法的工作原理。

以下是链接:

http://howtodoinjava.com/2012/10/22/singleton-design-pattern-in-java/

下一篇文章有​​助于解释在使用双重检查方法时使用volatile关键字:

http://javarevisited.blogspot.com/2011/06/volatile-keyword-java-example-tutorial.html