关于wait()方法的调用者
自己认为的, 不知道对不对,
wait()方法是定义在Object类中的,
对于sychronized限定的代码而言, 调用者是当前的监控器对象, 可以理解为java内部将该监控器与当前线程进行了绑定, 当synchronized中的代码执行完毕后, 该绑定又被一种特殊的方式解除了
对于ReentrantLock锁而言, 也是类似, 当拿到锁的时候, 当前线程与lock进行了绑定, 所以, 可以调用lock.wait(), 释放锁后 , 该绑定又被一种特殊的方式解除了