更新時間:2022-08-31 10:28:19 來源:動力節點 瀏覽1076次
相信大家對線程鎖分類已經有所了解,其中就有悲觀鎖和樂觀鎖。在悲觀鎖定中,當用戶打開數據進行更新時,會授予鎖定。其他用戶只能查看數據,直到數據更新的整個事務完成。
在樂觀鎖定中,打開一個數據以供多個用戶更新。僅在更新事務期間而不是整個會話期間授予鎖定。由于這種并發性增加并且是更新數據的實用方法。
樂觀鎖的概念:
樂觀鎖:指的是在操作數據的時候非常樂觀,樂觀地認為別人不會同時修改數據,因此樂觀鎖默認是不會上鎖的,只有在執行更新的時候才會去判斷在此期間別人是否修改了數據,如果別人修改了數據則放棄操作,否則執行操作。
沖突比較少的時候, 使用樂觀鎖(沒有悲觀鎖那樣耗時的開銷) 由于樂觀鎖的不上鎖特性,所以在性能方面要比悲觀鎖好,比較適合用在DB的讀大于寫的業務場景。
悲觀鎖的概念:
悲觀鎖:指的是在操作數據的時候比較悲觀,悲觀地認為別人一定會同時修改數據,因此悲觀鎖在操作數據時是直接把數據上鎖,直到操作完成之后才會釋放鎖,在上鎖期間其他人不能操作數據。
沖突比較多的時候, 使用悲觀鎖(沒有樂觀鎖那么多次的嘗試)對于每一次數據修改都要上鎖,如果在DB讀取需要比較大的情況下有線程在執行數據修改操作會導致讀操作全部被掛載起來,等修改線程釋放了鎖才能讀到數據,體驗極差。所以比較適合用在DB寫大于讀的情況。
讀取頻繁使用樂觀鎖,寫入頻繁使用悲觀鎖。
悲觀鎖定:
更新數據時,記錄被鎖定,其他人無法訪問該記錄進行更新。它成為只讀記錄,直到鎖被釋放。一旦鎖定被釋放,記錄可以再次被鎖定并為不同的用戶更新。
樂觀鎖定:
這允許多個用戶打開相同的記錄進行更新。只有在更新記錄時,記錄才會被鎖定。這是 Web 應用程序最優選的鎖定方式。
本站中多線程教程中還有更多的相關知識等著大家去學習,這是掌握多線程線程鎖種類的必學內容,為我們后面學習多線程的更多內容打下堅實的基礎。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習