锁的降级过程 获取写锁 -> 获取读锁 -> 释放写锁 -> 释放读所
在写的时候可以进行读操作,所以写锁可以降级为读锁
在读的时候不能进行写操作,所有读锁不能降级为写锁(读锁释放后才能获取写锁)
/**
* 演示读写锁降级
*/
public class Demo1 {
public static void main(String[] args) {
//可重入读写锁对象
ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();
ReentrantReadWriteLock.ReadLock readLock = rwLock.readLock();//读锁
ReentrantReadWriteLock.WriteLock writeLock = rwLock.writeLock();//写锁
//锁降级
//1.获取写锁
writeLock.lock();
System.out.println("--------");
//2.获取读锁
readLock.lock();
System.out.println("--------read");
//3.释放写锁
writeLock.unlock();
//4.释放读锁
readLock.unlock();
}
}