高并發(fā)之Synchronized的理解

作用:能夠保證在同一時刻最多只有一個線程執(zhí)行該段代碼喻犁,以達到保證并發(fā)安全的效果汽纤。

地位:java關鍵字上岗,是最基本的互斥同步手段,并發(fā)編程中必學

不使用并發(fā):例如蕴坪,我們做一個簡單的累加肴掷,累加10萬次,利用兩個線程背传,那么應該一共是累加到20萬呆瞻,

但是實際結果我們會發(fā)現(xiàn),根本不會到20萬径玖,基本到是14萬這種的痴脾,這就是沒有使用Synchronized導致的后果。在每次累加的時候梳星,一次累加包含讀取值赞赖,加一滚朵,寫入內存三個操作。例如前域,線程a在執(zhí)行加一的時候辕近,在讀取值5,然后加一了變成6匿垄,在沒有寫入寫存的時候移宅,線程b就執(zhí)行了讀取值,這個時候讀取的也是5椿疗,然后加一變成6寫入內存漏峰,這也就是為什么兩個線程在累加的時候,最終的結果會小于20萬的原因了届榄。這種情況浅乔,也就是我們通常所說的線程不安全,因為沒有加鎖痒蓬。

方法鎖:默認鎖對象為this當前實例對象童擎。

同步代碼塊鎖:自己制定鎖對象。

類鎖:Synchronized修飾的靜態(tài)方法或制指定鎖為class對象攻晒。

在類中加入Synchronized顾复,可以保證程序是串行執(zhí)行的,如果沒有加鲁捏,那么代碼塊就會是并行執(zhí)行芯砸,也就是會同時執(zhí)行的。Synchronized(this){};最關鍵的就是鎖的對象的選取给梅,這里選取的是this假丧,當前對象。對于需要鎖住的對象动羽,要根據具體的業(yè)務邏輯來選取包帚。

多線程訪問同步的七種情況:

1:兩個線程同時訪問一個對象的同步方法(串行,同一個實例运吓,同一把鎖渴邦,需要等待)

2:兩個線程同時訪問兩個對象的同步方法(并行,鎖的是不同對象)

3:兩個線程訪問的是Synchronized的靜態(tài)方法(串行拘哨,只要是靜態(tài)的谋梭,鎖的對象就是同一把)

4:同時訪問同步方法和非同步方法(同時執(zhí)行,同時結束倦青,并行)

5:訪問同一個對象的不相同的普通同步方法(非靜態(tài))(一個先執(zhí)行結束瓮床,后一個再執(zhí)行結束,串行)

6:同時訪問靜態(tài)Synchronized方法和非靜態(tài)Synchronized方法(同時開始,同時結束隘庄。鎖指定的所對象不是同一個鎖)

7:方法拋異常后踢步,會釋放鎖(第一個線程異常,但是第二個線程可以運行峭沦,則說明鎖釋放了)

總結:

1.一把鎖只能同時被一個線程獲取贾虽,沒有拿到鎖的線程必須等待

2.每個實例都對應自己的一把鎖逃糟,不同實例之間互不影響吼鱼,鎖對象是*.class以及synchronized修飾的static方法的時候,所有對象共用同一把類鎖

3.無論是方法正常執(zhí)行或者方法拋出異常绰咽,都會釋放鎖


?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末菇肃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子取募,更是在濱河造成了極大的恐慌琐谤,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玩敏,死亡現(xiàn)場離奇詭異斗忌,居然都是意外死亡,警方通過查閱死者的電腦和手機旺聚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門织阳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人砰粹,你說我怎么就攤上這事唧躲。” “怎么了碱璃?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵弄痹,是天一觀的道長。 經常有香客問我嵌器,道長肛真,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任爽航,我火速辦了婚禮蚓让,結果婚禮上,老公的妹妹穿的比我還像新娘岳掐。我一直安慰自己凭疮,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布串述。 她就那樣靜靜地躺著执解,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衰腌,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天新蟆,我揣著相機與錄音,去河邊找鬼右蕊。 笑死琼稻,一個胖子當著我的面吹牛,可吹牛的內容都是我干的饶囚。 我是一名探鬼主播帕翻,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼萝风!你這毒婦竟也來了嘀掸?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤规惰,失蹤者是張志新(化名)和其女友劉穎睬塌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歇万,經...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡揩晴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贪磺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硫兰。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缘挽,靈堂內的尸體忽然破棺而出瞄崇,到底是詐尸還是另有隱情,我是刑警寧澤壕曼,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布苏研,位于F島的核電站,受9級特大地震影響腮郊,放射性物質發(fā)生泄漏摹蘑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一轧飞、第九天 我趴在偏房一處隱蔽的房頂上張望衅鹿。 院中可真熱鬧,春花似錦过咬、人聲如沸大渤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泵三。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間烫幕,已是汗流浹背俺抽。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留较曼,地道東北人磷斧。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像捷犹,于是被迫代替她去往敵國和親弛饭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內容