单例思想
单例的思想是很简单的: 即仅使用一个对象来工作。这种模式在很多地方都有用武之地,最常见出现在对某一个系统进行统一管理的对象中,不仅是只使用一个对象“就可以了”,这种情况往往严格要求“只有”一个对象,这在并发环境下尤为需要注意。
一个好的编程习惯是,在设计每一个用于管理系统的类的时候,就思考,这个类需要多个对象吗,可以设计为单例吗?
Java中的实现
最简单的方式 – 饿汉式
public class Hungry {
private final static Hungry INSTANCE = new Hungry();
public static Hungry getInstance() {
return INSTANCE;
}
private Hungry() {
}
}
JVM保证,使用诸如ClassName.staticMethod语法导致的类加载只执行一次,(大部分情况下使用类加载器显示类加载啊也只会加载一次),同时保证了类加载的时候静态初始化会“立即”执行。以上保证在并发情况下依然成立,所以以上代码在并发情况下可以正常工作。
懒加载
在getInstance方法上直接同步