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