notify与notifyALL区别?

wtjd 2005-12-10 09:24:18
书上是这样解释wati,notify,notifyAll的:
wait:告诉当前线程放弃监视器并进入睡眠状态,直到其他线程进入同一监视器并调用notify为止。
notify:唤醒同一对象监视器中调用wait的第一个线程。
notifyAll:唤醒同一对象监视器中调用wait的所有线程,具有最高优先级的线程首先被唤醒并执行。

我就不明白了:notify是 唤醒同一对象监视器中调用wait的第一个线程,而notifyAll则是唤醒同一对象监视器中调用wait的所有线程,难道一个对象的wait方法可以被多少线程多次调用的吗?

...全文
200 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtjd 2005-12-13
  • 打赏
  • 举报
回复
原来是这样的,
wait与notify一般是配套使用的,
一个线程在同步语句中调用Object.wait方法,使该对象或类的锁释放掉,等待CPU分配时间片给其它线程,当其它线程调用Ojbect.notify后,wait方法才会返回。
notify与notifyAll的唯一区别就在于线程调用Object.wait方法后,有几个线程在等待其它线程将对象或类的锁释放掉,注意其它线程没有调用notify或notifyAll之间,调用Object.wait的线程是不是获取锁的,它们的区别就在于是唤醒调用wait方法的线程还是所有等待锁被释放的线程。
sun_104 2005-12-11
  • 打赏
  • 举报
回复
notify function only informs a waited thread.but notifyall will inform all waited thread.

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧