1、ReentrantReadWriteLock 可以設定公平鎖定模式和非公平鎖定模式。
// 公平锁模式 ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true); //非公平锁模式 默认情况 ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(false);
在獲得公平鎖之前,先檢查readerShouldBlock()方法,在取得寫鎖之前,先檢查writerShouldBlock()方法,然後再決定是排隊還是插隊。
2、非公平鎖定模式下, writerShouldBlock()和readerShouldBlock()實作
final boolean writerShouldBlock() { return false; // writers can always barge } final boolean readerShouldBlock() { return apparentlyFirstQueuedIsExclusive(); }
非公平鎖定可以在取得寫鎖時插隊。讀鎖時使用策略決定。
以上是Java中不同鎖定模式下插隊的行為分析。的詳細內容。更多資訊請關注PHP中文網其他相關文章!