指令重排序,致使雙檢鎖可能出現問題

主要是建立對象,這塊不是原子性的,致使可能出現空指針問題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

相關文章
相關標籤/搜索