概述
在类初始化的时候就完成单例的创建;
优点
- 由于类在初始化的时候会有一把初始化锁,故在类初始化的时候就完成单例的创建,不会存在多线程的问题;
- 实现简单;
缺点
- 造成内存的占用;
饿汉式单例模式代码
- 实例hungrySingleton可以声明成final的,final修饰的成员变量在类加载完成时就必须初始化完成,所以在static代码块中完成 hungrySingleton 的初始化;
- 这是基础版的饿汉式实现,是没有抵御反射攻击的防御代码的;
注意:单例对象的声明必须在静态块之前,否则单例对象无法被静态块chu
public class HungrySingleton {
private final static HungrySingleton hungrySingleton;
static {
hungrySingleton = new HungrySingleton();
}
private HungrySingleton() {}
public static HungrySingleton getInstance() {
return hungrySingleton;
}
}