JUC-锁-锁降级

1.什么是锁降级?

引自 JDK 的解释:

2.在读锁的哪个地方体现?

java.util.concurrent.locks.ReentrantReadWriteLock.Sync类中,tryAcquireShared 方法和 fullTryAcquireShared 中都有体现,例如下面的判断:

if (exclusiveCount(c) != 0) {
    if (getExclusiveOwnerThread() != current)
        return -1;

上面的代码的意思是:当写锁被持有时,如果持有该锁的线程不是当前线程,就返回 “获取锁失败”,反之就会继续获取读锁。称之为锁降级。

3.锁降级是否必要?作用是什么?

《Java 并发编程的艺术》中关于锁降级的说明:

03-05 22:10