重点来了
我们可以再input的时候,再Res r里设置一个布尔值false,当存完数据的时候,把false改为true,然后直接wait()。然后output把值取走之后把true再改为false,然后output wait()之前把input叫醒。然后input醒了,写数据,false改为true,然后把output叫醒,然后input自己再wait()
其他代码没变。运行结果:
当wait()的时候,程序就停了,不走了,当notify()的时候,就把当前锁上wait的线程唤醒了。
wait() notify() notifyAll()都使用在同步中,因为要对持有监视器,也就是锁的线程操作,所以要使用在同步中,因为只有同步中才具有锁
只有同一个锁上的被等待线程,可以被同一个锁上的notify唤醒,不可以对不同锁中的线程进行唤醒。唤醒和等待必须是同一个锁
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!