测试案例
package com.personal.test.lock;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Test20201225164752 {public static void test20201225164809() {Lock lock = new ReentrantLock();lock.lock();lock.lock();}public static void main(String[] args) {Test20201225164752.test20201225164809();}}
Condition 接口含义
Condition,Condition 将 Object的通信方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set (wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 通信方法的使用。
在 Condition 中,用 await() 替换 wait(),用 signal() 替换 notify(),用 signalAll() 替换 notifyAll(),传统线程的通信方式,Condition 都可以实现,这里注意,Condition 是被绑定到 Lock 上的,要创建一个 Lock 的 Condition 必须用 newCondition() 方法。
读写锁

参考资料
https://blog.csdn.net/qq_16607641/article/details/103774503
https://www.cnblogs.com/binghuaZhang/p/11119755.html
