class Singleton {
private Singleton(){};//私有化构造函数,防止使用者可以new出来
// 1.私有化构造函数,防止使用者可以new出来
private Singleton(){};
// 2.初始化对象
private static final Singleton singleton = new Singleton();
// 3.对外提供获取单例对象方法
public static Singleton getInstance(){
return singleton;
}
}
public class SingletonMain {
public static void main(String[] args) {
Singleton instance1 = Singleton.getInstance();
Singleton instance2 = Singleton.getInstance();
System.out.println(instance1 == instance2);//结果应该为true
System.out.println("instance1的hashCode:"+instance1.hashCode());
System.out.println("instance2的hashCode:"+instance2.hashCode());
}
}
优点:
写法简单,是线程安全的,在类装载的时候就完成实例化,避免线程同步问题。
缺点:
在类装载的时候就完成了初始化,如果没有用到这个对象,就浪费内存,照成资源浪费。