/**
* 单例模式- 饿汉式-静态代码块
*/
class Singleton {
// 1.私有化构造方法
private Singleton(){};
// 2.声明一个实例常量
private static Singleton singleton;
// 3.在静态方法创建对象
static {
singleton = new Singleton();
}
// 4.对外暴露get方法,返回对象实例
public static Singleton getInstance(){
return singleton;
}
}
public class Singleton2 {
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() == instance2.hashCode());//结果应该为true
}
}
优点:
写法简单,是线程安全的,在类装载的时候就完成实例化,避免线程同步问题。
缺点:
在类装载的时候就完成了初始化,如果没有用到这个对象,就浪费内存,照成资源浪费。