懒汉式单例
class Singleton {
private static Singleton s = new Singleton();
private Singleton() {
}
public static Singleton getSingleton() {
return s;
}
}
Singleton 通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。
饿汉式单例
class Singleton02 {
private static Singleton02 s = null;
private Singleton02() {}
public static Singleton02 getSingleton() {
if (s == null) {
s = new Singleton02();
}
return s;
}
}
饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。