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