java:单例模式

版权声明:本文为博主原创文章,转载请注明出处。 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关键字。

猜你喜欢

转载自blog.csdn.net/sxj159753/article/details/77985428