成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

各種鎖

leejan97 / 3007人閱讀

摘要:各種鎖公平鎖和非公平鎖公平鎖每個線程按照調(diào)用的順序依次獲取鎖獲取鎖之前先檢查等待隊列是否有線程如果沒有線程嘗試獲取鎖否則排隊非公平鎖線程獲取鎖的順序不定與調(diào)用順序無關(guān)直接嘗試獲取鎖未成功再排隊例子線程到達(dá)順序先到達(dá)獲取鎖到達(dá)獲取鎖嘗試獲

各種鎖 公平鎖和非公平鎖 公平鎖

每個線程按照調(diào)用lock的順序依次獲取鎖, 獲取鎖之前先檢查等待隊列是否有線程, 如果沒有線程嘗試獲取鎖, 否則排隊

非公平鎖

線程獲取鎖的順序不定, 與調(diào)用lock順序無關(guān), 直接嘗試獲取鎖, 未成功再排隊

例子

線程到達(dá)順序 A->B->C

A先到達(dá)獲取鎖

B到達(dá)獲取鎖, 嘗試獲取失敗, 進(jìn)入排隊隊列

A釋放鎖喚醒B, 同時C到達(dá)

公平鎖

C發(fā)現(xiàn)等待隊列中有線程, 直接進(jìn)入等待隊列隊尾排隊掛起, B獲取到鎖

非公平鎖

情況一: C一來直接嘗試獲取鎖, B獲取鎖失敗, 再次進(jìn)入等待隊列掛起

情況二: C一來直接嘗試獲取鎖, B獲取鎖成功, C進(jìn)入等待隊列掛起

悲觀鎖和樂觀鎖 悲觀鎖

每次獲取數(shù)據(jù)之前先加鎖, 結(jié)束之后再釋放, 占據(jù)鎖期間, 別人無法獲取數(shù)據(jù)

樂觀鎖

獲取數(shù)據(jù)時不加鎖, 但是設(shè)定一個版本號, 執(zhí)行完事務(wù)后, 與最初版本號進(jìn)行比較, 如果相等說明數(shù)據(jù)沒有被修改, 將版本號加一, 如果獲取到的版本號小于最新版本號, 說明當(dāng)前數(shù)據(jù)可能被修改過, 放棄本次操作, 重新操作

適用場景

當(dāng)沖突較少發(fā)生時, 可以選擇使用樂觀鎖, 節(jié)省了加鎖的代價, 加大吞吐量; 但當(dāng)沖突較多發(fā)生時, 選擇樂觀鎖時則會經(jīng)常Retry, 降低性能, 或者此時可以選用悲觀鎖

mysql實(shí)現(xiàn) 悲觀鎖實(shí)現(xiàn)
select from ... for update
樂觀鎖實(shí)現(xiàn)

在表中增加一個作為數(shù)據(jù)版本號的字段, 最好為每個需要樂觀鎖的字段多帶帶設(shè)置一個版本號, 否則可能會造成不必的沖突

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70941.html

相關(guān)文章

  • java線程同步

    摘要:只有首先獲得鎖的任務(wù)線程才能繼續(xù)獲取該對象上的多個鎖。會進(jìn)一步對時失敗的那些線程進(jìn)行阻塞操作調(diào)用操作系統(tǒng)的信號量此段來摘自別處。提供了多樣化的同步,比如有時間限制的同步,可以被的同步的同步是不能的等。 各種方法 1?synchronized方法。 public synchronized void save(){} 2?synchronized代碼塊。 synchronized(obj...

    endless_road 評論0 收藏0
  • 你和阿里資深架構(gòu)師之間,差的不僅僅是年齡(進(jìn)階必看)

    摘要:導(dǎo)讀閱讀本文需要有足夠的時間,筆者會由淺到深帶你一步一步了解一個資深架構(gòu)師所要掌握的各類知識點(diǎn),你也可以按照文章中所列的知識體系對比自身,對自己進(jìn)行查漏補(bǔ)缺,覺得本文對你有幫助的話,可以點(diǎn)贊關(guān)注一下。目錄一基礎(chǔ)篇二進(jìn)階篇三高級篇四架構(gòu)篇五擴(kuò) 導(dǎo)讀:閱讀本文需要有足夠的時間,筆者會由淺到深帶你一步一步了解一個資深架構(gòu)師所要掌握的各類知識點(diǎn),你也可以按照文章中所列的知識體系對比自身,對自己...

    huaixiaoz 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<