锁降级指当前线程把持住写锁再获取到读锁,随后释放先前拥有的写锁的过程。
对于支持重入锁的同步器例如ReentrantReadWriteLock ,如果当前进程获取到了写锁是允许继续获取读锁的
tryAcquireShared(int unused) 中
if (exclusiveCount(c) != 0 && getExclusiveOwnerThread() != current)
return -1;// 如果getExclusiveOwnerThread() == current 此处不会直接返回往下到获取读锁的逻辑中
注意:如果当前线程拥有写锁,然后将其释放,最后再获取到读锁,这种分段完成的过程不能称之为锁降级。
下面是一个演示实例
import java.util.concurrent.locks.Lock;
import java.util.concurrent.