并發(fā)編程——synchronized關(guān)鍵字的使用

前言

我們一般對共享數(shù)據(jù)操作的時候陪拘,為了達到線程安全我們會使用synchronized關(guān)鍵字去修飾方法或者代碼塊左刽。那么今天我們就來講一講synchronized關(guān)鍵字的使用。

專欄推薦:
并發(fā)編程專欄

synchronized的使用

synchronized的使用可以修飾代碼塊残黑,也可以修飾對象方法梨水,以及靜態(tài)方法茵臭。不過這些修飾的本質(zhì)實質(zhì)就只是鎖的資源不同旦委,一種是對象,一種是類摩钙。

修飾代碼塊

錯誤代碼:this查辩,對象鎖


當(dāng)我們使用不同實例對象去調(diào)用方法的時候會發(fā)現(xiàn)結(jié)果并不是我們想象的20000,因為this這個指代的是當(dāng)前對象功舀,因為是兩個不同的對象辟汰,所以使用this是鎖不住的阱佛。
看一下執(zhí)行結(jié)果:


只有使用相同的對象的時候瘫絮,才可以。所以不推薦使用this,而是使用固定的對象去作為鎖鹿鳖,才能夠鎖住翅帜。


相同實例對象的執(zhí)行結(jié)果:


下面我們使用一個初始化好的一個實例對象作為對象鎖涝滴。(useSynchronized)

使用不同的對象去調(diào)用也沒有問題歼疮,因為對象鎖是初始化好的一個實例對象useSynchronized作為對象鎖


執(zhí)行結(jié)果正確:


修飾對象方法

[圖片上傳中...(對象方法main.png-d41e8a-1628781214368-0)]


修飾對象方法,這個就和代碼塊中使用對象鎖一樣赡矢,因為synchronized修飾在對象方法上阅仔,所以它實質(zhì)是等于代碼塊中使用this,因為一個類可以有很多實例對象八酒,所以這個是鎖不住的。


執(zhí)行結(jié)果有問題袭景,未能鎖住:


修飾靜態(tài)方法

修飾靜態(tài)方法,這個就和代碼塊中使用類鎖一樣报辱,因為synchronized修飾在靜態(tài)方法上碍现,所以它實質(zhì)是等于代碼塊中使用當(dāng)前這個類的class,不管你一個類有多少個實例對象,你只有一個class爽篷,類鎖是唯一的就不會出現(xiàn)多線程同時執(zhí)行方法的現(xiàn)象慢睡。


執(zhí)行結(jié)果漂辐,和我們預(yù)想的一樣20000:


總結(jié)一下:

1髓涯、synchronized修飾對象方法,如果是不同的對象調(diào)用這個方法蚓再,是不能啟動任何控制作用的对途。synchronized修飾代碼塊時髓棋,如果鎖資源使用的是this,那么就和synchronized修飾對象方法一樣按声,因為一個類可以有多個實例對象,每個實例對象都不一樣须床,就相當(dāng)于一個門渐裂,有多個鑰匙钠惩,誰都可以進入篓跛。所以我們使用synchronized修飾代碼塊時坦刀,我們需要聲明一個唯一的鑰匙,比如我們上面的代碼沐寺,先創(chuàng)建一個靜態(tài)的實例對象混坞,使用它當(dāng)作這個門的唯一鑰匙钢坦,就可以保證多個線程场钉,不會同時進入方法內(nèi)執(zhí)行。

2泳猬、synchronized修飾靜態(tài)方法宇植,就比較簡單了,我們直接使用某一個類的class,它就可以實現(xiàn)一個唯一性指郁,不管是這個類的多少個實例對象忙上,這些對象對應(yīng)的class只有一個。所以是可以實現(xiàn)多線程操作共享資源闲坎,不會有問題疫粥。那么當(dāng)我們synchronized修飾代碼塊時,使用的是類鎖的話,那就很簡單了腰懂,唯一的類鎖梗逮,和修飾靜態(tài)方法一樣。

感謝諸君的觀看绣溜,文中如有紕漏慷彤,歡迎在評論區(qū)來交流。如果這篇文章幫助到了你底哗,歡迎點贊??關(guān)注岁诉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市跋选,隨后出現(xiàn)的幾起案子涕癣,更是在濱河造成了極大的恐慌,老刑警劉巖野建,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件属划,死亡現(xiàn)場離奇詭異恬叹,居然都是意外死亡候生,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門绽昼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唯鸭,“玉大人,你說我怎么就攤上這事硅确∧扛龋” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵菱农,是天一觀的道長缭付。 經(jīng)常有香客問我,道長循未,這世上最難降的妖魔是什么陷猫? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮的妖,結(jié)果婚禮上绣檬,老公的妹妹穿的比我還像新娘。我一直安慰自己嫂粟,他們只是感情好娇未,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著星虹,像睡著了一般零抬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宽涌,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天媚值,我揣著相機與錄音,去河邊找鬼护糖。 笑死褥芒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锰扶,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼献酗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坷牛?” 一聲冷哼從身側(cè)響起罕偎,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎京闰,沒想到半個月后颜及,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蹂楣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年俏站,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痊土。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡肄扎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赁酝,到底是詐尸還是另有隱情犯祠,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布酌呆,位于F島的核電站衡载,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏隙袁。R本人自食惡果不足惜痰娱,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藤乙。 院中可真熱鬧猜揪,春花似錦、人聲如沸坛梁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽划咐。三九已至拴念,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間褐缠,已是汗流浹背政鼠。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留队魏,地道東北人公般。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓万搔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親官帘。 傳聞我的和親對象是個殘疾皇子瞬雹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

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