public class SingleInstance {
// 加volatile防止指令重排
private static volatile SingleInstance INSTANCE = null;
private SingleInstance() {
}
public static SingleInstance getInstance() {
if (INSTANCE == null) {
synchronized (SingleInstance.class) {
if (INSTANCE == null) {
return new SingleInstance(); //如果不加volatile,第一个线程执行到此处,发生指令重排
} // 先分配的内存,线程二此时发现这个对象不为空,实际没有初始化,就会发生错误。
}
}
return INSTANCE;
}
}
volatile 优化的单例懒汉模式
最新推荐文章于 2024-06-05 17:25:26 发布