// 在成员变量声明的时候就要初始化
private static SingletonDemo3 instance = new SingletonDemo3();
private SingletonDemo3() {
}
public static SingletonDemo3 getInstance() {
// 若当前实例为空,重新指向一个新的实例
if (instance == null) {
instance = new SingletonDemo3();
}
return instance;
}
}
优点:没有加锁,执行效率会提高。
缺点:类加载时就初始化,浪费内存。
3.登记式模式(holder)
内部类只有在外部类被调用才加载,产生Singleton实例;又不用加锁。此模式有上述两个模式的优点,屏蔽了它们的缺点,是最好的单例模式。
/**
- 这个是懒汉模式变种,使用静态内部类创建
*/
public class SingletonDemo4 {
private static class SingletonHolder{
private static final SingletonDemo4 instance = new SingletonDemo4();
}
private SingletonDemo4() {
}
public static SingletonDemo4 getInstance() {
/