饿汉式
public class Singleton {
public static final Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() { return instance; }
}
懒汉式
public class Singleton {
// volatile 确保在多线程下的可见性
private volatile static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) { // 第一次检查
synchronized (Singleton.class) {
if (instance == null) { // 第二次检查
instance = new Singleton();
}
}
}
return instance;
}
}