2020-11-24

第四章:并發(fā)之共享模型

共享帶來的問題

為什么需要共享cpu

無法利用cpu的情況:sleep诅迷,wait教翩,io操作逮刨,通過分時系統(tǒng)提交cpu的利用率秽晚。即一個時間段內(nèi)多個線程可以獲取cpu資源

java中的體現(xiàn)

問題的產(chǎn)生:線程一對靜態(tài)變量i自加5000次瓦糟,線程二對靜態(tài)變量i自減5000次,最后的i不是0.

問題分析:i++操作在字節(jié)碼層面不是一條指令赴蝇。分為多條指令進行菩浙,在運算時在線程內(nèi)進行運算然后寫到主存,所線程一中計算后的結(jié)果還沒有寫到主存中cpu時間片用完了句伶,線程二讀取到了未被計算的i劲蜻,所以造成這個結(jié)果

[圖片上傳失敗...(image-f598a4-1606228386315)]

臨界區(qū)

[圖片上傳失敗...(image-524999-1606228386315)]

一段代碼塊內(nèi)如果存在對共享資源的多線程讀寫操作,這段代碼塊稱為臨界區(qū)

競太條件

多個線程在臨界區(qū)內(nèi)執(zhí)行考余,由于代碼的執(zhí)行序列不同導(dǎo)致結(jié)果無法預(yù)測先嬉,稱之發(fā)生了競態(tài)條件

解決方法

阻塞式:synchronized,lock

非阻塞式:原子變量

[圖片上傳失敗...(image-a04da6-1606228386315)]

互斥是對于同一資源來說的(靜態(tài)變量i)楚堤,同步只是規(guī)定了線程的執(zhí)行順序

synchronized保證了操作的原子性疫蔓,但并不保證可見性?身冬?衅胀?

synchronized在修改了本地內(nèi)存中的變量后,解鎖前會將本地內(nèi)存修改的內(nèi)容刷新到主內(nèi)存中酥筝,確保了共享變量的值是最新的滚躯,也就保證了可見性。

[圖片上傳失敗...(image-43fc39-1606228386315)]

方法上的synchronized

[圖片上傳失敗...(image-436c77-1606228386315)]

變量線程安全分析

方法本身是線程私有的嘿歌,安不安全是對于這個方法里操作的資源來說的掸掏,如果這個資源是靜態(tài)變量或者是引用對象等有可能造成線程不安全的問題

成員變量的安全性

[圖片上傳失敗...(image-17d338-1606228386315)]

局部變量的安全性
子類繼承造成的線程安全問題

當子類覆蓋了父類的方法后父類的局部變量會暴漏,方法的訪問修飾符是有意義的搅幅,可以在一定程度上保護方法中的資源安全問題

常見線程類

String阅束,Integer呼胚,StringBuffer茄唐,Random,HashTable蝇更,concurrent包下的類沪编。

也就是說他們的每個方法是原子的,==但是組合在一起不一定是線程安全的==

String類為什么是不可變類

線程安全類方法的組合

實例分析

售票問題
轉(zhuǎn)賬問題

使用的鎖必須是A賬戶和B賬戶同一把鎖年扩,所以將鎖加在方法上是不行的蚁廓,要用Account.class。==使用類鎖只能有兩個賬戶同時轉(zhuǎn)賬厨幻,如果賬戶很多時會造成性能的低下==

Monitor概念

monitor在操作系統(tǒng)中叫做管程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末相嵌,一起剝皮案震驚了整個濱河市腿时,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饭宾,老刑警劉巖批糟,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異看铆,居然都是意外死亡徽鼎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門弹惦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來否淤,“玉大人,你說我怎么就攤上這事棠隐∈眨” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵助泽,是天一觀的道長汁雷。 經(jīng)常有香客問我,道長报咳,這世上最難降的妖魔是什么侠讯? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮暑刃,結(jié)果婚禮上厢漩,老公的妹妹穿的比我還像新娘。我一直安慰自己岩臣,他們只是感情好溜嗜,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著架谎,像睡著了一般炸宵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谷扣,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天土全,我揣著相機與錄音,去河邊找鬼会涎。 笑死裹匙,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的末秃。 我是一名探鬼主播概页,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼练慕!你這毒婦竟也來了惰匙?” 一聲冷哼從身側(cè)響起技掏,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎项鬼,沒想到半個月后零截,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡秃臣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年涧衙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奥此。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡弧哎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稚虎,到底是詐尸還是另有隱情撤嫩,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布蠢终,位于F島的核電站序攘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏寻拂。R本人自食惡果不足惜程奠,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望祭钉。 院中可真熱鬧瞄沙,春花似錦、人聲如沸慌核。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垮卓。三九已至垫桂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粟按,已是汗流浹背诬滩。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钾怔,地道東北人碱呼。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓蒙挑,卻偏偏與公主長得像宗侦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子忆蚀,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

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

  • ## 第四章:并發(fā)之共享模型 ### 共享帶來的問題 為什么需要共享cpu 無法利用cpu的情況:sleep矾利,wa...
    NULL_d05f閱讀 89評論 0 0
  • Day 1 一萬學習筆記 Markdown練習 加粗語言 **文本** 級別標題 # 文本 心得 下載并安裝沙拉查...
    一萬萬萬萬閱讀 166評論 0 0
  • markdown寫作練習 無序表格練習 高血壓分類 原發(fā)性高血壓是一種以血壓升高為主要臨床表現(xiàn)而病因尚未明確的獨立...
    daliah閱讀 162評論 0 0
  • foochane :https://foochane.cn/article/2019123002.html 1 多...
    foochane閱讀 782評論 0 0
  • 黑色的海島上懸著一輪又大又圓的明月男旗,毫不嫌棄地把溫柔的月色照在這寸草不生的小島上舶斧。一個少年白衣白發(fā),悠閑自如地倚坐...
    小水Vivian閱讀 3,108評論 1 5