在类加载的时候就完成实例化
package com.geely.design.pattern.creational.singleton;
/**
* Created by geely
*/
public class HungrySingleton {
// 准备阶段会被分配内存,但不会被赋予null值,在初始化阶段被初始化。
private final static HungrySingleton hungrySingleton;
static{
hungrySingleton = new HungrySingleton();
}
public static HungrySingleton getInstance(){
return hungrySingleton;
}
private HungrySingleton(){
if(hungrySingleton != null){
throw new RuntimeException("单例构造器禁止反射调用");
}
}
}
这个就是非常简单的饿汉式单例模式,优点就是写法简单,类加载的时候就完成了初始化,避免了多线程同步问题(因为有Class对象的初始化锁)。缺点是在类加载的时候就完成初始化,没有延迟加载的效果。如果这个类系统从始至终都没有用过还会造成内存的浪费。
网友评论