synchronized和lock

自旋鎖

線程被阻塞后便進(jìn)入內(nèi)核Linux調(diào)度狀態(tài),這個(gè)會(huì)導(dǎo)致系統(tǒng)在用戶態(tài)和內(nèi)核態(tài)來回切換搭儒,嚴(yán)重影響鎖的性能

緩解上述問題的辦法便是自旋穷当,其原理是:當(dāng)發(fā)生爭(zhēng)用時(shí)提茁,若Owner線程能在很短的時(shí)間內(nèi)釋放鎖,則那些正在用線程可以稍微等一等(自旋)馁菜,在Owner線程釋放鎖后茴扁,爭(zhēng)用線程可能會(huì)立即得到鎖,從而便面了系統(tǒng)的阻塞汪疮。但Owner運(yùn)行的時(shí)間可能會(huì)超出了臨界值峭火,爭(zhēng)用線程自旋一段時(shí)間后還無法獲得鎖,這時(shí)爭(zhēng)爭(zhēng)用線程則會(huì)停止自旋進(jìn)入阻塞狀態(tài)(后退)智嚷÷敉瑁基本思路就是就是自旋,不成功再阻塞盏道;盡量降低阻塞的可能性稍浆,這對(duì)那些執(zhí)行時(shí)間很短的代碼塊來說有非常重要的性能提升。自旋鎖有個(gè)貼切的名字猜嘱,自旋指數(shù)后退鎖衅枫,,也即復(fù)合鎖朗伶,很顯然弦撩,自璇在多個(gè)處理器上才有意義。

還有個(gè)問題是腕让,線程自旋時(shí)做些啥孤钦?其實(shí)啥都不做,可以執(zhí)行幾次for循環(huán)纯丸,可以執(zhí)行幾條空的匯編指令偏形,目的是占著cpu不放,等待獲得鎖的機(jī)會(huì)觉鼻,所以說自旋是把雙刃劍俊扭,如果旋的時(shí)間過長(zhǎng)會(huì)影響整體性能,時(shí)間過短又達(dá)不到延遲阻塞的目的坠陈。顯然萨惑,自選的周期選擇顯得非常重要,但這與操作系統(tǒng)仇矾,硬件體系庸蔼、系統(tǒng)的負(fù)載等諸多場(chǎng)景相關(guān),很難選擇贮匕,如果選擇不當(dāng)姐仅,不但性能得不到提高,可能還會(huì)下降,因此大家普遍認(rèn)為自旋鎖不具備可擴(kuò)展性掏膏。

偏向鎖

偏向鎖主要解決無競(jìng)爭(zhēng)下的鎖的性能問題劳翰??

現(xiàn)在幾乎所有的鎖都是可重入的馒疹,也即已經(jīng)獲得鎖的線程可以多次鎖住/解鎖監(jiān)視對(duì)象佳簸,按照之前的hotspot設(shè)計(jì),每次加鎖/解鎖都會(huì)涉及到一些CAS操作(比如對(duì)于等待隊(duì)列的CAS操作)颖变,CAS操作會(huì)延遲本地調(diào)用生均,因此偏向鎖的想法是一旦線程第一次獲得監(jiān)視對(duì)象,之后讓監(jiān)視對(duì)象偏向這個(gè)線程悼做,之后的多次調(diào)用則可以避免CAS操作疯特,說白了就是置一個(gè)變量,如果發(fā)現(xiàn)為true則無需再更重加鎖/解鎖的流程肛走。


CAS和SMP架構(gòu)

CAS為什么會(huì)引入本地延遲?這里從SMP對(duì)稱多處理器架構(gòu)說起录别,下面大概說明了SMP的結(jié)構(gòu):


其意思是所有的CPU會(huì)共享一條系統(tǒng)總線BUS朽色,靠此總線連接主存,每個(gè)核都有自己的一級(jí)緩存组题,各核相對(duì)于BUS對(duì)稱分布葫男,因此這種解雇稱為對(duì)稱多處理器

CAS的全稱為Compare and swap,一條CPU的原子指令崔列,器作用是讓CPU比較后原子地更新某個(gè)位置的值梢褐,經(jīng)過調(diào)查發(fā)現(xiàn),其實(shí)現(xiàn)方式基于硬件平臺(tái)的匯編指令赵讯,就是說CAS是靠硬件實(shí)現(xiàn)的盈咳,JVM只是封裝了匯編調(diào)用,那些AtomicInteger類便是使用了這些封裝后的接口

cache一致性考驗(yàn)边翼,當(dāng)很多線程共享一個(gè)對(duì)象的情況下鱼响,即物理層面是很多cpu核通過總線修改對(duì)象內(nèi)存的數(shù)據(jù),那么總線的通信能力將成為瓶頸组底,總線引起的總線風(fēng)暴丈积,這就是所謂的本地延遲,本質(zhì)上偏向鎖就是為了消除CAS债鸡,降低Cache一致性流量

synchronzed的底層實(shí)現(xiàn)主要依靠Lock-Free的隊(duì)列江滨,基本思路是自旋后阻塞,競(jìng)爭(zhēng)切換后繼續(xù)競(jìng)爭(zhēng)鎖厌均,稍微犧牲了公平性唬滑,獲得了高吞吐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市间雀,隨后出現(xiàn)的幾起案子悔详,更是在濱河造成了極大的恐慌,老刑警劉巖惹挟,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茄螃,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡连锯,警方通過查閱死者的電腦和手機(jī)归苍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來运怖,“玉大人拼弃,你說我怎么就攤上這事∫≌梗” “怎么了吻氧?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)咏连。 經(jīng)常有香客問我盯孙,道長(zhǎng),這世上最難降的妖魔是什么祟滴? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任振惰,我火速辦了婚禮,結(jié)果婚禮上垄懂,老公的妹妹穿的比我還像新娘骑晶。我一直安慰自己,他們只是感情好草慧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布桶蛔。 她就那樣靜靜地躺著,像睡著了一般冠蒋。 火紅的嫁衣襯著肌膚如雪羽圃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天抖剿,我揣著相機(jī)與錄音朽寞,去河邊找鬼。 笑死斩郎,一個(gè)胖子當(dāng)著我的面吹牛脑融,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缩宜,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肘迎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼甥温!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妓布,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤姻蚓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后匣沼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狰挡,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年释涛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了加叁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唇撬,死狀恐怖它匕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窖认,我是刑警寧澤豫柬,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站耀态,受9級(jí)特大地震影響轮傍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜首装,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杭跪。 院中可真熱鬧仙逻,春花似錦、人聲如沸涧尿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)姑廉。三九已至缺亮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桥言,已是汗流浹背萌踱。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留号阿,地道東北人并鸵。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扔涧,于是被迫代替她去往敵國(guó)和親园担。 傳聞我的和親對(duì)象是個(gè)殘疾皇子届谈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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