設(shè)計模式-創(chuàng)建型-單例模式

單例模式:

為什么使用單例模式色瘩?
節(jié)約內(nèi)存開銷,提高效率(性能)覆山,提高資源使用率泥栖。
單例模式的特點(diǎn):

構(gòu)造方法私有化
定義靜態(tài)方法返回當(dāng)前對象
確保這個對象是唯一的
確保在序列化和反序列化操作的過程中同樣保證同一個對象簇宽。
列表內(nèi)容
不允許有子類(太監(jiān)類->final)

單例模式->惡漢式(單線程推薦使用)
優(yōu)點(diǎn):安全(為你提前準(zhǔn)備好,不管你用不用)
缺陷:耗費(fèi)內(nèi)存

public final class Singleton {
    private static Singleton instance = new Singleton();
    private Singleton(){}
    public static Singleton getInstance(){
        return instance;
    }
}

單例模式->懶漢式
優(yōu)點(diǎn):性能高->在一定程度上節(jié)約了內(nèi)存(用到了我才給你吧享,創(chuàng)建)
缺點(diǎn):多線程問題很難解決(并發(fā))Sptring框架魏割、Hebernate框架等等…
問題一:不加鎖?
多線程并發(fā)情況下钢颂,創(chuàng)建多個對象
解決方案:加鎖解決多創(chuàng)建多個對象問題
問題二:阻塞钞它?
200個線程訪問這個對象,等待上一個線程用完了才允許使用(耗費(fèi)性能)

public final class Singleton {
    private static Singleton instance;
    private Singleton(){}
    public static Singleton getInstance(){
        if (instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}

單例模式->雙重檢查
優(yōu)勢:既能夠保證創(chuàng)建對象單例對象殊鞭,同時也保證了多線程安全
第一步:分析編譯器編譯過程
以下代碼做了什么事情遭垛?
Singleton instance = new Singleton()
1-首先:分配內(nèi)存(new關(guān)鍵字)
2-其次:調(diào)用構(gòu)造方法初始化參數(shù)
3-最后:將instance對象指向這快內(nèi)存區(qū)域(內(nèi)存空間)
問題:雙重檢查失敗(失效)操灿?
在Java虛擬機(jī)(JVM 1.5之前)中Cache耻卡、寄存器到主內(nèi)存回寫數(shù)據(jù)順序很有可能亂序,有可能是1-2-3牲尺,也有可能是1-3-2卵酪。
1-2-3幌蚊,是先初始化,在指向內(nèi)存
1-3-2溃卡,是先執(zhí)行空內(nèi)存溢豆,在初始化
解決方案
在Java虛擬機(jī)(JVM)1.5版本以及之后版本,做了優(yōu)化關(guān)鍵字volatile (volatile含義:去掉虛擬機(jī)優(yōu)化代碼)瘸羡。
第二步:存在缺陷
為了提高代碼穩(wěn)定性漩仙,程序正確性,消耗性能犹赖。(權(quán)衡)
第三步:這樣的場景下我們可以使用
使用沒有進(jìn)行優(yōu)化過編譯器或者共享內(nèi)存處理器队他,正常運(yùn)行。
單例模式-靜態(tài)內(nèi)部類峻村?->官方推薦使用(多線程推薦使用)
優(yōu)勢:既能夠保證內(nèi)存優(yōu)化麸折,同時也能夠保證安全(單例)

 public final class Singleton {

    private Singleton(){}

    public static Singleton getInstance(){
        return SingletonHolder.singleton;
    }

    public static class SingletonHolder{
        private static Singleton singleton = new Singleton();
    }
}

單例模式->枚舉

   public enum  Singleton {

    instance;
}

dome下載地址!U匙颉9柑洹!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末张肾,一起剝皮案震驚了整個濱河市芭析,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吞瞪,老刑警劉巖馁启,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芍秆,居然都是意外死亡进统,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門浪听,熙熙樓的掌柜王于貴愁眉苦臉地迎上來螟碎,“玉大人,你說我怎么就攤上這事迹栓〉舴郑” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵克伊,是天一觀的道長酥郭。 經(jīng)常有香客問我,道長愿吹,這世上最難降的妖魔是什么不从? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮犁跪,結(jié)果婚禮上椿息,老公的妹妹穿的比我還像新娘歹袁。我一直安慰自己,他們只是感情好寝优,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布条舔。 她就那樣靜靜地躺著,像睡著了一般乏矾。 火紅的嫁衣襯著肌膚如雪孟抗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼奇徒。 笑死,一個胖子當(dāng)著我的面吹牛摊沉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播亿胸,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼预皇!你這毒婦竟也來了侈玄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤吟温,失蹤者是張志新(化名)和其女友劉穎序仙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鲁豪,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡潘悼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了爬橡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片治唤。...
    茶點(diǎn)故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖糙申,靈堂內(nèi)的尸體忽然破棺而出宾添,到底是詐尸還是另有隱情,我是刑警寧澤柜裸,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布缕陕,位于F島的核電站,受9級特大地震影響疙挺,放射性物質(zhì)發(fā)生泄漏扛邑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一铐然、第九天 我趴在偏房一處隱蔽的房頂上張望蔬崩。 院中可真熱鬧恶座,春花似錦、人聲如沸舱殿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沪袭。三九已至湾宙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冈绊,已是汗流浹背侠鳄。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留死宣,地道東北人伟恶。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像毅该,于是被迫代替她去往敵國和親博秫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 槍管頂在他的腦袋上眶掌,觸感冰冷挡育。火藥刺鼻的味道仿佛從槍膛透出朴爬,沁入了學(xué)長的皮膚里即寒。 這把槍的主人是一個身材矮小的侏儒...
    一夜星辰閱讀 21,434評論 0 7
  • 沒有反思的人生不值得過-蘇格拉底 本周關(guān)鍵字:健身 周一(背、胸)周二(下背召噩、三頭)周三(減脂)周四(臀)周五(上...
    安安_02a8閱讀 176評論 0 0
  • 同桌是一個安靜乖巧的女生母赵,說話總是糯糯的,柔柔的具滴,聲音帶點(diǎn)自然的嗲凹嘲,但并不顯得做作。她與她的男朋友初二開始在一起构韵,...
    _君莫問_閱讀 693評論 0 1
  • 這是Howie-Serious 365日寫作計劃第011天的寫作內(nèi)容贞绳。 今天是羊年的最后一天谷醉。除夕夜,現(xiàn)在電腦上正...
    Howie_Serious閱讀 424評論 2 8