相信面向對象程序員都對單例模式比較熟悉,而對于單例模式卻有著各種各樣的寫法,今天我專門針對一種稱為雙重加鎖的寫法進行分析。我們先來看下這種寫法。

平面設計培訓,網(wǎng)頁設計培訓,美工培訓,游戲開發(fā),動畫培訓

/**
 * 單例雙重加鎖Demo
 * */public class DoubleCheckLock {   
    private static DoubleCheckLock instance ;    
    private DoubleCheckLock(){
        
    }    
    public static DoubleCheckLock getInstance(){        if(instance == null){            synchronized (DoubleCheckLock.class) {                if(instance == null)
                    instance = new DoubleCheckLock() ;
            }
        }        return instance;
    }
}

平面設計培訓,網(wǎng)頁設計培訓,美工培訓,游戲開發(fā),動畫培訓

  這種寫法相信很多人都見過,但是你認為這種寫法是正確的嗎?或者更準確的來說,這種寫法在并發(fā)的環(huán)境下是否還能表現(xiàn)出正確的行為呢。

  之所以有這種所謂的雙重加鎖,一方面是因為延遲初始化可以提高性能,另一方面通過使用內置鎖sychronized來防止并發(fā),其原

網(wǎng)友評論