摘要:各種鎖公平鎖和非公平鎖公平鎖每個(gè)線程按照調(diào)用的順序依次獲取鎖獲取鎖之前先檢查等待隊(duì)列是否有線程如果沒(méi)有線程嘗試獲取鎖否則排隊(duì)非公平鎖線程獲取鎖的順序不定與調(diào)用順序無(wú)關(guān)直接嘗試獲取鎖未成功再排隊(duì)例子線程到達(dá)順序先到達(dá)獲取鎖到達(dá)獲取鎖嘗試獲
各種鎖 公平鎖和非公平鎖 公平鎖
每個(gè)線程按照調(diào)用lock的順序依次獲取鎖, 獲取鎖之前先檢查等待隊(duì)列是否有線程, 如果沒(méi)有線程嘗試獲取鎖, 否則排隊(duì)
非公平鎖線程獲取鎖的順序不定, 與調(diào)用lock順序無(wú)關(guān), 直接嘗試獲取鎖, 未成功再排隊(duì)
例子線程到達(dá)順序 A->B->C
A先到達(dá)獲取鎖
B到達(dá)獲取鎖, 嘗試獲取失敗, 進(jìn)入排隊(duì)隊(duì)列
A釋放鎖喚醒B, 同時(shí)C到達(dá)
公平鎖
C發(fā)現(xiàn)等待隊(duì)列中有線程, 直接進(jìn)入等待隊(duì)列隊(duì)尾排隊(duì)掛起, B獲取到鎖
非公平鎖
情況一: C一來(lái)直接嘗試獲取鎖, B獲取鎖失敗, 再次進(jìn)入等待隊(duì)列掛起
情況二: C一來(lái)直接嘗試獲取鎖, B獲取鎖成功, C進(jìn)入等待隊(duì)列掛起
悲觀鎖和樂(lè)觀鎖 悲觀鎖每次獲取數(shù)據(jù)之前先加鎖, 結(jié)束之后再釋放, 占據(jù)鎖期間, 別人無(wú)法獲取數(shù)據(jù)
樂(lè)觀鎖獲取數(shù)據(jù)時(shí)不加鎖, 但是設(shè)定一個(gè)版本號(hào), 執(zhí)行完事務(wù)后, 與最初版本號(hào)進(jìn)行比較, 如果相等說(shuō)明數(shù)據(jù)沒(méi)有被修改, 將版本號(hào)加一, 如果獲取到的版本號(hào)小于最新版本號(hào), 說(shuō)明當(dāng)前數(shù)據(jù)可能被修改過(guò), 放棄本次操作, 重新操作
適用場(chǎng)景當(dāng)沖突較少發(fā)生時(shí), 可以選擇使用樂(lè)觀鎖, 節(jié)省了加鎖的代價(jià), 加大吞吐量; 但當(dāng)沖突較多發(fā)生時(shí), 選擇樂(lè)觀鎖時(shí)則會(huì)經(jīng)常Retry, 降低性能, 或者此時(shí)可以選用悲觀鎖
mysql實(shí)現(xiàn) 悲觀鎖實(shí)現(xiàn)select from ... for update樂(lè)觀鎖實(shí)現(xiàn)
在表中增加一個(gè)作為數(shù)據(jù)版本號(hào)的字段, 最好為每個(gè)需要樂(lè)觀鎖的字段多帶帶設(shè)置一個(gè)版本號(hào), 否則可能會(huì)造成不必的沖突
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70941.html
摘要:只有首先獲得鎖的任務(wù)線程才能繼續(xù)獲取該對(duì)象上的多個(gè)鎖。會(huì)進(jìn)一步對(duì)時(shí)失敗的那些線程進(jìn)行阻塞操作調(diào)用操作系統(tǒng)的信號(hào)量此段來(lái)摘自別處。提供了多樣化的同步,比如有時(shí)間限制的同步,可以被的同步的同步是不能的等。 各種方法 1?synchronized方法。 public synchronized void save(){} 2?synchronized代碼塊。 synchronized(obj...
摘要:導(dǎo)讀閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類(lèi)知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己進(jìn)行查漏補(bǔ)缺,覺(jué)得本文對(duì)你有幫助的話(huà),可以點(diǎn)贊關(guān)注一下。目錄一基礎(chǔ)篇二進(jìn)階篇三高級(jí)篇四架構(gòu)篇五擴(kuò) 導(dǎo)讀:閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類(lèi)知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己...
閱讀 2448·2021-11-15 11:38
閱讀 2831·2021-11-02 14:44
閱讀 3812·2021-09-26 10:13
閱讀 3055·2021-08-13 15:02
閱讀 776·2019-08-30 15:56
閱讀 1427·2019-08-30 15:53
閱讀 2358·2019-08-30 13:01
閱讀 3184·2019-08-29 12:57