單例模式(線程安全)

1梦裂、單例模式就是系統(tǒng)中對于某類只能有一個對象

方式一:(不使用同步鎖)

       public class Singleton {
             private static Singleton instance= new Singleton()忆畅;   //直接初始化一個實例對象
             private Singleton() {}     //private 類型的構造函數(shù)夹姥,保證其它類對象不能直接new一個該對象的實例
             public static Singleton getInstance() {    //該類唯一一個public 方法
                    return instance;
             } 
        }

    上述代碼中的一個缺點是:該類加載的時候就會直接new一個靜態(tài)對象滋迈,當系統(tǒng)中這樣的類較多時,會使得啟動速度變慢。

方式二:(使用同步鎖)

       public class Singleton {
             private static Singleton instance; 
             private Singleton() {}     //private 類型的構造函數(shù)休蟹,保證其它類對象不能直接new一個該對象的實例
             public static synchronized Singleton getInstance() {    //對獲取實例的方法進行同步
                    if (instance == null) {
                              instance = new Singleton();
                    }
                    return instance;
             } 
        }

     上述代碼鎖的粒度有點大

方式三:(使用雙重同步鎖)

       public class Singleton {
             private static Singleton instance; 
             private Singleton() {}     //private 類型的構造函數(shù)日矫,保證其它類對象不能直接new一個該對象的實例
             public static Singleton getInstance() {    //對獲取實例的方法進行同步
                    if (instance == null) {
                            synchronized(Singleton.class) {
                                    if (instance == null) {
                                           instance = new Singleton();
                                    }
                            }
                    }
                    return instance;
             } 
        }

方式四:(更好的是采用下面的方式赂弓,既不用加鎖,也能實現(xiàn)懶加載)

       public class Singleton {         
             private Singleton() {}     //private 類型的構造函數(shù)哪轿,保證其它類對象不能直接new一個該對象的實例
             private static class Inner {             //采用內(nèi)部類的方式
                     private static Singleton instance = new Singleton();
             }
             public static Singleton getInstance() {   
                    return Inner.instance;
             } 
        }
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盈魁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子窃诉,更是在濱河造成了極大的恐慌杨耙,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件飘痛,死亡現(xiàn)場離奇詭異珊膜,居然都是意外死亡,警方通過查閱死者的電腦和手機敦冬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門辅搬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脖旱,你說我怎么就攤上這事堪遂。” “怎么了萌庆?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵溶褪,是天一觀的道長。 經(jīng)常有香客問我践险,道長猿妈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任巍虫,我火速辦了婚禮彭则,結果婚禮上,老公的妹妹穿的比我還像新娘占遥。我一直安慰自己俯抖,他們只是感情好,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布瓦胎。 她就那樣靜靜地躺著芬萍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搔啊。 梳的紋絲不亂的頭發(fā)上柬祠,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音负芋,去河邊找鬼漫蛔。 笑死,一個胖子當著我的面吹牛旧蛾,可吹牛的內(nèi)容都是我干的惩猫。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼蚜点,長吁一口氣:“原來是場噩夢啊……” “哼轧房!你這毒婦竟也來了?” 一聲冷哼從身側響起绍绘,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤奶镶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后陪拘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厂镇,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年左刽,在試婚紗的時候發(fā)現(xiàn)自己被綠了捺信。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖迄靠,靈堂內(nèi)的尸體忽然破棺而出秒咨,到底是詐尸還是另有隱情,我是刑警寧澤掌挚,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布雨席,位于F島的核電站,受9級特大地震影響吠式,放射性物質發(fā)生泄漏陡厘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一特占、第九天 我趴在偏房一處隱蔽的房頂上張望糙置。 院中可真熱鬧,春花似錦是目、人聲如沸谤饭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽网持。三九已至,卻和暖如春长踊,著一層夾襖步出監(jiān)牢的瞬間功舀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工身弊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辟汰,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓阱佛,卻偏偏與公主長得像帖汞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子凑术,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

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

  • 雖說單例模式屬于設計模式中最簡單的一個模式翩蘸,但是如果深入探索一下,其實還是有些學問的淮逊。比如: 如何設計一個線程安全...
    馬拉松Mara閱讀 671評論 0 2
  • 單例模式——線程安全的兩種實現(xiàn) 一催首、雙重檢查鎖定(double-checked locking) 推薦使用懶漢式寫...
    消失er閱讀 416評論 0 2
  • 單例模式是指對一個對象進行一次實例化,然后全局都可以調(diào)用該實例化對象來完成項目的開發(fā)泄鹏。 在計算機系統(tǒng)中郎任,線程池、緩...
    FantJ閱讀 1,485評論 0 3
  • 懶漢式:線程安全,開銷大 雙重檢查鎖:線程安全,根據(jù)需求使用 靜態(tài)內(nèi)部類鎖:線程安全霉猛,比較推薦 餓汗式:線程安全尺锚,...
    WilsonMing閱讀 417評論 0 2
  • 訂了表七點半,關掉繼續(xù)睡韩脏。到八點起床的半小時里缩麸,做了好長的夢铸磅。 夢到和他和好了赡矢。我在樓梯上要下去,他站在下一臺階阅仔,...
    烏冬烏冬閱讀 114評論 0 0