Java併發編程-樂觀鎖和悲觀鎖

樂觀鎖

老是假設最好的狀況,每次取數據的時候都認爲別人不會修改,因此不會上鎖,可是在更新的時候會判斷在此期間有沒有別人更新這個數據,可使用版本號機制和 CAS 算法實現。樂觀鎖適用於多讀的場景,這樣能夠提升吞吐量。算法

悲觀鎖

老是假設最壞的狀況,每次去取數據的時候都認爲別人會修改,因此每次取數據的時候都會加上鎖,這樣別人想拿這個數據就會阻塞直到拿到鎖(共享資源每次只給一個線程使用,其餘線程阻塞)。悲觀鎖適合多寫的場景。常見的 synchronized 和 Reentrantlock 等獨佔鎖都是悲觀鎖思想的實現。線程

相關文章
相關標籤/搜索