版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/sxj159753/article/details/77985428
双重校验锁
public class DCLSingle {
private volatile static DCLSingle instance;
private DCLSingle(){
}
public static DCLSingle getInstance(){
if(instance == null){
synchronized(DCLSingle.class){
intance = new DCLSingle();
}
}
return instance;
}
}
class文件中方法的字节码流就是由JVM的指令序列构成的。
Jdk5 以后支持处理器乱序执行 汇编指令。
导致 指向地址和实例化堆区 顺序不同。
所以必须加上volatile关键字。