單例範例

/**
 * 1、單例範例
 */
public class Instance {
    /**
     * 1、volatile修飾變量,保證變量在多線程中的可見性,即:變量instance在某一線程中被更改,其它線程能立即獲得修改後的值
     * 2、tip:JVM運行時會有一個主內存,各線程也有各自的專屬內存,
     * 3、對於靜態變量,如果不加volatile修飾,將由JVM自己決定何時從各線程的專屬內存中讀取變量值,導致髒數據出現
     */
    public static volatile Instance instance = null;
    /**
     * synchronized修飾的方法,保證了同時只有一個線程可以調用
     */
    public static synchronized Instance getInstance() {
        if(instance == null) {
            instance = new Instance();
        }
        return instance;
    }
}

知識點:1、volatile 2、synchronized

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章