更新時(shí)間:2022-08-31 10:28:19 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1467次
相信大家對(duì)線程鎖分類已經(jīng)有所了解,其中就有悲觀鎖和樂(lè)觀鎖。在悲觀鎖定中,當(dāng)用戶打開(kāi)數(shù)據(jù)進(jìn)行更新時(shí),會(huì)授予鎖定。其他用戶只能查看數(shù)據(jù),直到數(shù)據(jù)更新的整個(gè)事務(wù)完成。
在樂(lè)觀鎖定中,打開(kāi)一個(gè)數(shù)據(jù)以供多個(gè)用戶更新。僅在更新事務(wù)期間而不是整個(gè)會(huì)話期間授予鎖定。由于這種并發(fā)性增加并且是更新數(shù)據(jù)的實(shí)用方法。

樂(lè)觀鎖的概念:
樂(lè)觀鎖:指的是在操作數(shù)據(jù)的時(shí)候非常樂(lè)觀,樂(lè)觀地認(rèn)為別人不會(huì)同時(shí)修改數(shù)據(jù),因此樂(lè)觀鎖默認(rèn)是不會(huì)上鎖的,只有在執(zhí)行更新的時(shí)候才會(huì)去判斷在此期間別人是否修改了數(shù)據(jù),如果別人修改了數(shù)據(jù)則放棄操作,否則執(zhí)行操作。
沖突比較少的時(shí)候, 使用樂(lè)觀鎖(沒(méi)有悲觀鎖那樣耗時(shí)的開(kāi)銷) 由于樂(lè)觀鎖的不上鎖特性,所以在性能方面要比悲觀鎖好,比較適合用在DB的讀大于寫的業(yè)務(wù)場(chǎng)景。
悲觀鎖的概念:
悲觀鎖:指的是在操作數(shù)據(jù)的時(shí)候比較悲觀,悲觀地認(rèn)為別人一定會(huì)同時(shí)修改數(shù)據(jù),因此悲觀鎖在操作數(shù)據(jù)時(shí)是直接把數(shù)據(jù)上鎖,直到操作完成之后才會(huì)釋放鎖,在上鎖期間其他人不能操作數(shù)據(jù)。
沖突比較多的時(shí)候, 使用悲觀鎖(沒(méi)有樂(lè)觀鎖那么多次的嘗試)對(duì)于每一次數(shù)據(jù)修改都要上鎖,如果在DB讀取需要比較大的情況下有線程在執(zhí)行數(shù)據(jù)修改操作會(huì)導(dǎo)致讀操作全部被掛載起來(lái),等修改線程釋放了鎖才能讀到數(shù)據(jù),體驗(yàn)極差。所以比較適合用在DB寫大于讀的情況。
讀取頻繁使用樂(lè)觀鎖,寫入頻繁使用悲觀鎖。
悲觀鎖定:
更新數(shù)據(jù)時(shí),記錄被鎖定,其他人無(wú)法訪問(wèn)該記錄進(jìn)行更新。它成為只讀記錄,直到鎖被釋放。一旦鎖定被釋放,記錄可以再次被鎖定并為不同的用戶更新。
樂(lè)觀鎖定:
這允許多個(gè)用戶打開(kāi)相同的記錄進(jìn)行更新。只有在更新記錄時(shí),記錄才會(huì)被鎖定。這是 Web 應(yīng)用程序最優(yōu)選的鎖定方式。
本站中多線程教程中還有更多的相關(guān)知識(shí)等著大家去學(xué)習(xí),這是掌握多線程線程鎖種類的必學(xué)內(nèi)容,為我們后面學(xué)習(xí)多線程的更多內(nèi)容打下堅(jiān)實(shí)的基礎(chǔ)。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)