讀寫鎖——ReentrantReadWriteLock原理詳解
阿新 • • 發佈:2019-08-18
1.讀寫鎖ReentrantReadWriteLock的原理
解決執行緒安全問題使用ReentrantLock就可以了,但是ReentrantLock是獨佔鎖,某一時刻只有一個執行緒可以獲取該鎖,而實際中會有寫少讀多的場景,顯然ReentrantLock滿足不了這個需求,所以ReentrantReadWriteLock應運而生。ReentrantReadWriteLock採用讀寫分離的策略,允許多個執行緒可以同時獲取讀鎖。
1.1 ReentrantReadWriteLock類圖結構
由類圖可知,讀寫鎖內部維護了一個ReadLock和一個WriteLock,他們依賴Sync實現具體功能,而Sync繼承自AQS,並且提供了公平和非公平的實現。
1.2 原始碼解讀
我們先看下ReentrantReadWriteLock類的整體結構
public class ReentrantReadWriteLock implements ReadWriteLock, java.io.Serializable { private final ReentrantReadWriteLock.ReadLock readerLock;//讀鎖