为了账号安全,请及时绑定邮箱和手机立即绑定

关于wait()和notify()用法

  1. 当使用了wait()方法后,线程停止等待,那wait后面的语句还会被执行吗?如果没有被执行,那notify();也没被执行,那怎么通知其他线程呢?

  2. 为什么不能把notify()放进while循环里面?放在外面不就是代表条件不满足不执行wait(),也要执行notify()?

正在回答

3 回答

我得到最后的答案是因为每次都执行一次notify;所以即使他wait()了释放了锁,由于他上一次执行了 notify()了,所以就已经叫醒了另外的线程,注意这个notify和wait()不是在同一次过程中的。

0 回复 有任何疑惑可以回复我~

你想的是一条线程,而现在是多条线程,也就是说很多线程都依次执行这段代码

0 回复 有任何疑惑可以回复我~

你这逻辑。。。。。  我理解的是这样的  当前线程调用的wait()线程就处于阻塞状态,后面的语句当然不会执行,并且,线程调用wait()之后是会释放掉锁资源,然后自己才进入小黑屋等待的,所以并不影响后面线程访问关键数据;

while 的作用是将满足while条件的线程关进小黑屋啊。。。所以    只有在不满足while的情况下,线程得以成功读写完关键数据,然后才会调用notidy()唤醒小黑屋里的其他等待的线程

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
深入浅出Java多线程
  • 参与学习       186085    人
  • 解答问题       464    个

带你一起深入浅出多线程,掌握基础,展望进阶路线

进入课程

关于wait()和notify()用法

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信