单例模式写法有很多种,双重校验
public class Singleton {
//jvm类加载机制,静态变量加载方法区,线程公共的
//volatile关键字来保证可见性、有序性写操作先行发生于后面对这个变量的读操作
private volatile static Singleton singleton;
private Singleton() {
}
//只初始化一次
public static Singleton getInstance() {
if (singleton == null) {
//多线程并发解决保证原子性
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}