单例模式是确保一个类只有一个实例。
public class Singleton {
private volatile static Singleton sInstance = null;
private Singleton() {
}
public static Singleton getInstance() {
if (sInstance == null) {
synchronized (Singleton.class) { //类的信息在JVM的方法区内,所有线程共享
if (sInstance == null) { //防止多线程重复创建对象
sInstance = new Singleton(); //由于指令重排序这里可能会存在并发问题,所以需要加上volatile修饰,禁止指令重排序,详情见《Java并发编程艺术》双重检查锁章节
}
}
}
return sInstance;
}
}