java并發(fā)編程的實踐

第二章 線程安全性

  • 對象的狀態(tài):存儲在狀態(tài)變量(實例或者靜態(tài)域)中的數(shù)據(jù)拴事。
  • 共享:變量可以被多個線程同時訪問脓规。
  • 可變:變量的值在其生命周期內(nèi)可以發(fā)生變化源织。
  • 線程安全:多個線程訪問某個類的時,這個類始終都能表現(xiàn)出正確的行為誉己,那么就稱這個類是線程安全的眉尸。
  • 實現(xiàn)線程安全:
    1.不在線程之間共享變量的狀態(tài) - 不共享
    2.將狀態(tài)變量修改為不可變的變量 - 不可變
    3.在訪問狀態(tài)變量時使用同步 - 同步
  • 同步機制包含:
    1.synchronized
    2.volatile
    3.顯式鎖
    4.原子變量
  • 競態(tài)條件:不恰當?shù)膱?zhí)行時序出現(xiàn)不正確的結(jié)果。
  • 不變性條件巨双。驗證程序是否滿足最基本的正確性噪猾。
  • 要保持狀態(tài)的一致性,就需要在單個原子操作中更新所有相關(guān)的狀態(tài)變量筑累。
  • 重入:一個線程請求其他線程持有的鎖會失敗袱蜡,請求本線程持有的鎖會成功。synchronized和reentrantLock都是可重入的慢宗。
  • 活躍性和性能問題:降低鎖粒度

第三章 對象的共享

  • 可見性:一個線程對變量的修改坪蚁,其他線程不一定能訪問到改修改。需要對變量做同步才可以保證可見镜沽。
  • 在沒有同步的情況下敏晤,編譯器、處理器以及運行時等都可能對操作的執(zhí)行順序進行一些意想不到的調(diào)整缅茉。在缺乏足夠同步的多線程程序中嘴脾,要想對內(nèi)存操作得當執(zhí)行順序進行判斷,幾乎無法得出正確的結(jié)論。 個人總結(jié):編譯器會進行優(yōu)化译打,指令重排序等耗拓,需要設(shè)置內(nèi)存屏障來保證必要的指令不會被重排序。java中有一堆happends before規(guī)則奏司。
  • 只要有數(shù)據(jù)在多個線程之間共享乔询,就使用正確的同步。
  • 失效數(shù)據(jù):沒有使用正確的同步的情況下韵洋,一個線性沒有讀到其他線程對變量的修改哥谷。
  • 64位變量和最低安全性:最低安全性:雖然讀到的變量值可能會失效,但是確實是其他線程設(shè)置過得麻献。long這些可能讀到不同版本的高32位和低32位。
  • 發(fā)布:是對象能夠在當前作用域之外的代碼中使用猜扮。
  • 逸出:某個不應該發(fā)布的對象被發(fā)布勉吻。
  • ThisEscape:this指針逃逸,在構(gòu)造函數(shù)調(diào)用外部方法旅赢,或者起一個線程之類的齿桃。
  • 線程封閉:不共享可變數(shù)據(jù)。threadlocal煮盼。
  • 棧封閉:局部變量短纵。
  • 不變性:不可變對象,Immutable Object僵控。
    1.對象創(chuàng)建之后狀態(tài)不可修改
    2.所有的域都是final
    3.對象是正確創(chuàng)建的香到。
  • Final域:final字段不可修改,但是final字段如果是引用類型报破,引用的對象的狀態(tài)是可以修改的悠就。java內(nèi)存模型中,final有特殊的語義充易,final能保初始化過程的安全性梗脾。。盹靴。不太理解

java 封裝的一個院子操作:unsafe.compareAndSwapInt

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末炸茧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子稿静,更是在濱河造成了極大的恐慌梭冠,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件自赔,死亡現(xiàn)場離奇詭異妈嘹,居然都是意外死亡,警方通過查閱死者的電腦和手機绍妨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門润脸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柬脸,“玉大人,你說我怎么就攤上這事毙驯〉苟椋” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵爆价,是天一觀的道長垦巴。 經(jīng)常有香客問我,道長铭段,這世上最難降的妖魔是什么骤宣? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮序愚,結(jié)果婚禮上憔披,老公的妹妹穿的比我還像新娘。我一直安慰自己爸吮,他們只是感情好芬膝,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著形娇,像睡著了一般锰霜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上桐早,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天癣缅,我揣著相機與錄音,去河邊找鬼哄酝。 笑死所灸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的炫七。 我是一名探鬼主播爬立,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼万哪!你這毒婦竟也來了侠驯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤奕巍,失蹤者是張志新(化名)和其女友劉穎吟策,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體的止,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡檩坚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匾委。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡拖叙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赂乐,到底是詐尸還是另有隱情薯鳍,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布挨措,位于F島的核電站挖滤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浅役。R本人自食惡果不足惜斩松,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望觉既。 院中可真熱鬧砸民,春花似錦、人聲如沸奋救。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尝艘。三九已至,卻和暖如春姿染,著一層夾襖步出監(jiān)牢的瞬間背亥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工悬赏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留狡汉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓闽颇,卻偏偏與公主長得像盾戴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子兵多,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

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