Ank*_*kur 2 java lifecycle singleton
我不太清楚Singleton类的早期初始化这个术语是什么意思.理解Singleton类的生命周期也很有帮助.
嗯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;
}
}
Run Code Online (Sandbox Code Playgroud)
根据生命周期,在JVM启动后以及初始化类时加载此单例.它在关闭/退出时由JVM卸载.
延迟初始化
class SingletonClass {
private static SingletonClass object;
private SingletonClass () {}
public static SingletonClass getInstance(){
if(object == null){
object= new SingletonClass (); //Lazy Initalizaion
}
return object;
}
}
Run Code Online (Sandbox Code Playgroud)
早期初始化
class SingletonClass {
private static SingletonClass object = new SingletonClass (); //Early initialization
private SingletonClass () {}
public static SingletonClass getInstance(){
return object;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3995 次 |
| 最近记录: |