请问调用notify后被选中线程的wait是立刻返回,还是等到调用notify的线程退出synchronized块后再返回?

natrium11 2002-10-04 08:56:58
我想应该是后者,但是因为要写书,还是确定一下。

唉,所有的例子都把notify作为最后一条语句,虽然应该如此,可是无法说明这一点。

多谢各位!!!
...全文
125 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Iforgot 2002-10-05
  • 打赏
  • 举报
回复
不是骂你,是实在看咱国人写的书很痛心。所以希望你能够写好书,也就是祝愿你写出好书!
natrium11 2002-10-05
  • 打赏
  • 举报
回复
多谢各位的答复,本人非常感激,加一些分吧,可是不好意思,本人最多只能给100(该死的csdn,我一想到这一点就有气!)。

to Iforgot(清风雨) :骂得好,骂得真好,不用给我面子,呵呵。
DanielYWoo 2002-10-05
  • 打赏
  • 举报
回复
to qqbz(qqbz)
人家写书耶!当然要深入写了
我认为是后者,大家如果从锁计数器的角度考虑,
就很清晰了
qqbz 2002-10-04
  • 打赏
  • 举报
回复
1、有关概念是这样的:
遇到notify(),运行系统立刻从等待池中任选一wait的线程进入寻找对象锁状态,
2、因此我认为在第一点中并不能说是立刻返回,应当是该线程重新找回对象锁继续执行该方法。
3、一般而言,在一个线程调用的synchronized方法中使用了wait后,需要另一个synchronized方法来notify()。
4、对于一般性的编程,似乎没必要钻研得那么深入,只要记住以上第一点。
zbc 2002-10-04
  • 打赏
  • 举报
回复
应该是后者,因为在synchronized语句块里面,任何时候只能有一个线程的,只有调用notify的线程退出后,线程才具有抢占cpu的机会
Iforgot 2002-10-04
  • 打赏
  • 举报
回复
个人觉得应该是后者,否则可能容易死锁!

我希望阁下写书时能够认真点,中国人自己写的书基本都一个字“差”。真的,简直就是误人子弟。但愿阁下能够是为数不多的不得“很差”之名的中国人。

实在看到很多人写书太不负责,所以或多或少对国人这种态度有些不太好感。如有冒犯之处还敬请原谅。
DanielYWoo 2002-10-04
  • 打赏
  • 举报
回复
后者吧
你想,notify之后,被激活的线程不能立即有锁呀,
必须出了synchronized语句块或方法,才能锁计数器减1
被激活的线程发现锁计数器为0时,才能对此对象操作
natrium11 2002-10-04
  • 打赏
  • 举报
回复
你的意思是?不大明白
daowang 2002-10-04
  • 打赏
  • 举报
回复
调用wait()后,将释放对象所有的属性,直到遇到notify(),故而未立即返回,这只是我的个人观点

62,635

社区成员

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

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