指令重排序,致使双检锁可能出现问题

主要是建立对象,这块不是原子性的,致使可能出现空指针问题java

1,咱们先来看一段双检锁的代码指针

private static Client instance;

    public static Client getInstance(){
        if(instance == null){
            synchronized (Client.class){
                if(instance == null){
                    //0,建立对象的过程
                    //1,在内存中开辟空间
                    //2,在这个空间里实例化对象
                    //3,将这个实例对象指向这个空间地址
                    instance = new Client();
                }
            }
        }
        return instance;
    }

2,解决的办法,给instance 加上volatile 修饰便可,这样能够禁止指令重排序,致使返回空对象问题code

相关文章
相关标签/搜索