單例模式懶漢式與餓漢式詳解

單例模式屬于創(chuàng)建型模式的一種,應(yīng)用于保證一個(gè)類僅有一個(gè)實(shí)例的場(chǎng)景下擅羞,并且提供了一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)混狠,如spring中的全局訪問(wèn)點(diǎn)BeanFactory丽涩,spring下所有的bean都是單例桐腌。

單例模式的特點(diǎn):從系統(tǒng)啟動(dòng)到終止拄显,整個(gè)過(guò)程只會(huì)產(chǎn)生一個(gè)實(shí)例。

單例模式常用寫法:懶漢式案站,餓漢式邓馒,注冊(cè)式闪朱,序列化式槐秧。

下面比較一下懶漢式和餓漢式:

懶漢式:默認(rèn)不會(huì)實(shí)例化,什么時(shí)候用什么時(shí)候new遭殉。

public class Lazy{

????????private Lazy(){};

????????// 默認(rèn)不會(huì)實(shí)例化,什么時(shí)候用什么時(shí)候new

????????private static Lazy lazy = null;

????????public static synchronized Lazy getInstance(){

????????????????if (lazy == null) {

????????????????????????lazy = new Lazy();

????????????????}

????????????????return lazy;

????????}????

}

餓漢式:類加載的時(shí)候就實(shí)例化博助,并且創(chuàng)建單例對(duì)象险污。

public class Hungry{

????????private Hungry(){};

????????// 類加載的時(shí)候就實(shí)例化,并且創(chuàng)建單例對(duì)象

????????private static final Hungry hungry = new Hungry();

????????public static Hungry getInstance() {

????????????????return hungry;

????????}

}

懶漢式和餓漢式區(qū)別:

? ??實(shí)例化方面:懶漢式默認(rèn)不會(huì)實(shí)例化富岳,外部什么時(shí)候調(diào)用什么時(shí)候new蛔糯。餓漢式在類加載的時(shí)候就實(shí)例化,并且創(chuàng)建單例對(duì)象城瞎。

? ??線程安全方面:餓漢式線程安全 (在線程還沒(méi)出現(xiàn)之前就已經(jīng)實(shí)例化了渤闷,因此餓漢式線程一定是安全的)疾瓮。懶漢式線程不安全( 因?yàn)閼袧h式加載是在使用時(shí)才會(huì)去new 實(shí)例的脖镀,那么你去new的時(shí)候是一個(gè)動(dòng)態(tài)的過(guò)程,是放到方法中實(shí)現(xiàn)的狼电,比如:public static synchronized Lazy getInstance(){? ?if(lazy==null){??lazy=new Lazy(); } 如果這個(gè)時(shí)候有多個(gè)線程訪問(wèn)這個(gè)實(shí)例蜒灰,這個(gè)時(shí)候?qū)嵗€不存在,還在new肩碟,就會(huì)進(jìn)入到方法中强窖,有多少線程就會(huì)new出多少個(gè)實(shí)例。一個(gè)方法只能return一個(gè)實(shí)例削祈,那最終return出哪個(gè)呢翅溺?是不是會(huì)覆蓋很多new的實(shí)例?這種情況當(dāng)然也可以解決髓抑,那就是加同步鎖咙崎,避免這種情況發(fā)生) 。

? ??執(zhí)行效率上:餓漢式?jīng)]有加任何的鎖吨拍,因此執(zhí)行效率比較高褪猛。懶漢式一般使用都會(huì)加同步鎖,效率比餓漢式差羹饰。

? ??性能上:餓漢式在類加載的時(shí)候就初始化伊滋,不管你是否使用,它都實(shí)例化了队秩,所以會(huì)占據(jù)空間笑旺,浪費(fèi)內(nèi)存。懶漢式什么時(shí)候需要什么時(shí)候?qū)嵗勺剩鄬?duì)來(lái)說(shuō)不浪費(fèi)內(nèi)存燥撞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子物舒,更是在濱河造成了極大的恐慌色洞,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冠胯,死亡現(xiàn)場(chǎng)離奇詭異火诸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)荠察,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門置蜀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人悉盆,你說(shuō)我怎么就攤上這事盯荤。” “怎么了焕盟?”我有些...
    開(kāi)封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵秋秤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我脚翘,道長(zhǎng)灼卢,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任来农,我火速辦了婚禮鞋真,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沃于。我一直安慰自己涩咖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布繁莹。 她就那樣靜靜地躺著檩互,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蒋困。 梳的紋絲不亂的頭發(fā)上盾似,一...
    開(kāi)封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音雪标,去河邊找鬼零院。 笑死,一個(gè)胖子當(dāng)著我的面吹牛村刨,可吹牛的內(nèi)容都是我干的告抄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嵌牺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼打洼!你這毒婦竟也來(lái)了龄糊?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤募疮,失蹤者是張志新(化名)和其女友劉穎炫惩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體阿浓,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡他嚷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芭毙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筋蓖。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖退敦,靈堂內(nèi)的尸體忽然破棺而出粘咖,到底是詐尸還是另有隱情,我是刑警寧澤侈百,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布瓮下,位于F島的核電站,受9級(jí)特大地震影響设哗,放射性物質(zhì)發(fā)生泄漏唱捣。R本人自食惡果不足惜两蟀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一网梢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赂毯,春花似錦战虏、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至膛堤,卻和暖如春手趣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肥荔。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工绿渣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人燕耿。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓中符,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親誉帅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淀散,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355