單例模式-DCL

鐵子們有段時間沒有更新了,最近忙著準備面試,準備過程中發(fā)現(xiàn)自己還需要積累的實在是太多太多,每每學到新東西的感覺真是美妙而又動力十足啊,繼續(xù)伸直腰桿、努力前進

單例模式-DCL

雙重檢查判斷,使用volatile關鍵字禁止指令重排,在多線程情況下創(chuàng)建安全的單例對象,直接上代碼

public class Instance {

    /**
     * volatile 禁止指令重排,按照代碼執(zhí)行順序先賦值后創(chuàng)建對象
     */
    private volatile static Instance instance;

    private String instName;

    private Instance() {
        instName = "DCL";
    }

    public static Instance getInstance() {
        if (instance == null) {
            synchronized (Instance.class) {
                if (instance == null) {
                    instance = new Instance();
                }
            }
        }
        return instance;
    }
}

單例模式-內部類

使用內部類構造單例對象,JVM保證單例

public class Instance {

    private static class InstanceObj {
        private static final Instance INSTANCE = new Instance();
    }

    public static Instance getInstance() {
        return InstanceObj.INSTANCE;
    }
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容