Java中单例类的早期初始化意味着什么

Java中单例类的早期初始化意味着什么,java,singleton,lifecycle,Java,Singleton,Lifecycle,我不太清楚术语Singleton类的早期初始化是什么意思。另外,了解Singleton类的生命周期也很有帮助。通常在Singleton中,这就是您看到的 private static YouClass singleTon ; -- -- public static YouClass getInstance(){ if(singleTon == null){ singleTon = new YouClass();

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

通常在Singleton中,这就是您看到的

 private static YouClass  singleTon ;

--

--

    public static YouClass getInstance(){
            if(singleTon  == null){
                singleTon  = new YouClass();
            }
            return singleTon  ;
        }
在这个场景中,当您第一次调用
getInstance()
时,只会创建
YouClass
实例

早期初始化,这意味着

在你们班上

  private static YouClass singleTon = new YouClass();
在声明实例自身时创建实例

从中,阅读类型

  • 延迟初始化

  • 急切初始化

  • 静态块初始化


好的
延迟初始化
意味着只有在第一次使用对象时才初始化它们

早期初始化
正好相反,您可以在加载类时预先初始化一个单例

有很多方法可以进行早期初始化,一种是将单例声明为
静态

以下是一个例子:

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

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

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

惰性初始化

 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;
    }
 }
早期初始化

 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;
    }
 }

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

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

以下是链接:

下一篇文章将帮助解释在使用双重检查方法时volatile关键字的用法:


嗨,阿努巴瓦,还有什么其他方式可以让你早日康复initialization@upog:使用
Enum
是另一种方法,或者使用类似Spring的框架注入单例。