Wait - notify

4. Wait-notify

原理:lock.wait/lock.notify

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

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

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

image1

Sleep() && wait()

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

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

image2
模板代码

image3

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

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