Wait - notify

4. Wait-notify

原理:lock.wait/lock.notify

只有获得了该对象锁才能调用wait方法,

调用之后会加入Monitor的waitSet进入堵塞状态,

直到别的线程获得对象锁并且调用nofity/notifyall

b66436e29dc6db5acb6bad46011189fcd7dfd7a0

Sleep() && wait()

sleep不会让当前线程释放锁,

wait会释放锁,并且加入waitSet堵塞等待

10b8ce6f4a7e89f5b1181fa0dcaeda82aa568101
模板代码

a7a6b806192ea10437fe74df837eeabbadaf4271

注意这里是notifyAll(),叫醒所有,然后while()发现不成立,继续wait

如果是notify的话随机叫醒会出现虚假叫醒