讀寫鎖
圖解讀鎖、寫鎖的持有和堵塞情況,虛線為讀鎖、實線為寫鎖,綠色為不堵塞、紅色為堵塞。
Java的ReentrantReadWriteLock的部分邏輯解析
除了數據庫有讀寫鎖,Java也有讀寫鎖的線程,這里簡單解析ReentrantReadWriteLock,當然,了解ReentrantReadWriteLock的前提要了解ReentrantLock的實現(本文暫不涉及)。
用int類型的state維護讀鎖和寫鎖的狀態
用什么維護讀寫鎖的狀態的呢?用一個int類型的變量維護,高16位維護讀鎖,低16維護寫鎖。
獲取寫鎖的流程
簡單圖解解析ReentrantReadWriteLock.Sync.tryAcquire(int acquires)的邏輯,圖一是較詳細的圖解,圖二是較白話的圖解: