国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Lazy Singleton的Java實(shí)現(xiàn)

2019-11-18 15:03:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

由于java的內(nèi)存模型的原因,在C++中的雙重檢查模型在Java中不可用:

public static Singleton getInstance() {
    if(instance==null) {
        synchronized(this) {
            if(instance==null) {
                instance=new Singleton();
            }
        }
    }
    return instance;
}

假如采用synchronized方法,又會(huì)嚴(yán)重影響性能:

public static synchronized Singleton getInstance() {
    if(instance==null) {
        instance=new Singleton();
    }
    return instance;
}

如何實(shí)現(xiàn)Lazy Singleton?方法是利用Java的ClassLoader即時(shí)裝載特性,使用一個(gè)SingletonHolder實(shí)現(xiàn):

static class SingletonHolder {
    static Singleton instance = new Singleton();
}
public static Singleton getInstance() {
    return SingletonHolder.instance;
}

這里利用Java ClassLoader特性,在第一次加載SingletonHolder的時(shí)候初始化實(shí)例,并且保證了沒(méi)有多線程并發(fā)問(wèn)題。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 买车| 曲沃县| 敦煌市| 出国| 新邵县| 贵港市| 慈利县| 黑河市| 瑞丽市| 永州市| 巴中市| 沾益县| 赤水市| 且末县| 广宁县| 马公市| 琼中| 方山县| 武陟县| 安阳县| 政和县| 巴彦淖尔市| 达日县| 荔浦县| 黄龙县| 南江县| 斗六市| 安龙县| 仁怀市| 格尔木市| 杂多县| 缙云县| 崇明县| 沙洋县| 连城县| 靖远县| 汤阴县| 巴楚县| 聊城市| 平乡县| 高雄市|