wait方法使用到了Monitor对象里的waitset属性,当一个线程调用了wait方法时就会进入Monitor的waitset进行等待,状态变成waiting并释放锁,当其他线程(当前锁对象的owner线程)调用了锁对象的唤醒方法(notify/notifyAll)后,waitSet里的线程就会进入entryList变成Block状态,当owner线程释放锁后entryList里的线程就会开始竞争锁。 四...
从底层来讲,当调用wait方法时,JVM会把这个线程放到这个对象的等待队列里。这个等待队列就像是一个小房间,里面都是在等这个对象发生某些事情的线程。这个线程就会在这个小房间里安安静静地待着,啥也不做,直到被唤醒。 那啥时候会被唤醒呢?这就轮到notify闪亮登场啦。notify就像是主人回家的脚步声,它会去叫醒在等待...