單例

靜態(tài)類內(nèi)部加載
使用內(nèi)部類的好處是玩讳,靜態(tài)內(nèi)部類不會在單例加載時就加載蓖租,而是在調(diào)用getInstance()方法時才進行加載,達到了類似懶漢模式的效果捉片,而這種方法又是線程安全的蝙茶。

public class SingletonDemo { private static class SingletonHolder{ private static SingletonDemo instance=new SingletonDemo();
    } private SingletonDemo(){
        System.out.println("Singleton has loaded");
    } public static SingletonDemo getInstance(){ return SingletonHolder.instance;
    }
}

double check volatile

private volatile Resource resource;

public Resource getResource() {
  Resource tmp = this.resource;  
  if (tmp == null) {   
    synchronized(this){
      tmp = this.resource   
      if (tmp == null) {  
        this.resource = tmp = new Resource();    
      }     
    }    
  }  
  return tmp;  
} 

new Resource() 可以分解為:

 memory =allocate();     //1:分配對象的內(nèi)存空間 
 ctorInstance(memory);   //2:初始化對象 
 instance =memory;       //3:設(shè)置instance指向剛分配的內(nèi)存地址

如果被重排為

 memory = allocate();     //1:分配對象的內(nèi)存空間 
 instance = memory;       //2:設(shè)置instance指向剛分配的內(nèi)存地址
 ctorInstance(memory);   //3:初始化對象 

就會出現(xiàn)線程A中執(zhí)行這段賦值語句艺骂,在完成對象初始化之前就已經(jīng)將其賦值給resource引用,恰好另一個線程進入方法判斷instance引用不為null隆夯,然后就將其返回使用钳恕,導(dǎo)致出錯别伏。將resource設(shè)置為volatile之后,可以保證對相關(guān)操作的順序忧额。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末厘肮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子睦番,更是在濱河造成了極大的恐慌类茂,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件托嚣,死亡現(xiàn)場離奇詭異巩检,居然都是意外死亡,警方通過查閱死者的電腦和手機示启,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門兢哭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人丑搔,你說我怎么就攤上這事厦瓢。” “怎么了啤月?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長劳跃。 經(jīng)常有香客問我谎仲,道長,這世上最難降的妖魔是什么刨仑? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任郑诺,我火速辦了婚禮,結(jié)果婚禮上杉武,老公的妹妹穿的比我還像新娘辙诞。我一直安慰自己,他們只是感情好轻抱,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布飞涂。 她就那樣靜靜地躺著,像睡著了一般祈搜。 火紅的嫁衣襯著肌膚如雪较店。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天容燕,我揣著相機與錄音梁呈,去河邊找鬼。 笑死蘸秘,一個胖子當(dāng)著我的面吹牛官卡,可吹牛的內(nèi)容都是我干的蝗茁。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼评甜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了仔涩?” 一聲冷哼從身側(cè)響起忍坷,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎熔脂,沒想到半個月后佩研,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡霞揉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年旬薯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片适秩。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡绊序,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出秽荞,到底是詐尸還是另有隱情骤公,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布扬跋,位于F島的核電站阶捆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钦听。R本人自食惡果不足惜洒试,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望朴上。 院中可真熱鬧垒棋,春花似錦、人聲如沸痪宰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酵镜。三九已至碉碉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淮韭,已是汗流浹背垢粮。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留靠粪,地道東北人蜡吧。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓毫蚓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親昔善。 傳聞我的和親對象是個殘疾皇子元潘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361