Java核心知識 多線程併發 共享鎖和獨佔鎖(十五)


Java核心知識 多線程併發 共享鎖和獨佔鎖(十五)

java 併發包提供的加鎖模式分為獨佔鎖和共享鎖。

獨佔鎖

獨佔鎖模式下,每次只能有一個線程能持有鎖,ReentrantLock 就是以獨佔方式實現的互斥鎖。 獨佔鎖是一種悲觀保守的加鎖策略,它避免了讀/讀衝突,如果某個只讀線程獲取鎖,則其他讀線 程都只能等待,這種情況下就限制了不必要的併發性,因為讀操作並不會影響數據的一致性。

共享鎖

共享鎖則允許多個線程同時獲取鎖,併發訪問 共享資源,如:ReadWriteLock。共享鎖則是一種 樂觀鎖,它放寬了加鎖策略,允許多個執行讀操作的線程同時訪問共享資源。

1. AQS 的內部類 Node 定義了兩個常量 SHARED 和 EXCLUSIVE,他們分別標識 AQS 隊列中等 待線程的鎖獲取模式。

2. java 的併發包中提供了 ReadWriteLock,讀-寫鎖。它允許一個資源可以被多個讀操作訪問, 或者被一個 寫操作訪問,但兩者不能同時進行。


分享到:


相關文章: