1. 程式人生 > >讀寫鎖——ReentrantReadWriteLock原理詳解

讀寫鎖——ReentrantReadWriteLock原理詳解

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;//讀鎖