引自 JDK 的解释:
锁降级:
在 java.util.concurrent.locks.ReentrantReadWriteLock.Sync
类中, tryAcquireShared
方法和 fullTryAcquireShared
中都有体现,例如下面的判断:
if (exclusiveCount(c) != 0) { if (getExclusiveOwnerThread() != current) return -1;
上面的代码的意思是:当写锁被持有时,如果持有该锁的线程不是当前线程,就返回 “获取锁失败”,反之就会继续获取读锁。称之为锁降级。
《Java 并发编程的艺术》中关于锁降级的说明:
锁降级中读锁的获取是否必要呢?