新手 Java 多线程

多线程 obj是一个对象 如果A线程调用了 obj.wait() ,是不是要 B(其他)线程调用 obj.notify() 才能醒来

0

3个回答

不一定,其他线程正常释放obj的锁也可以

0
JonathanYan
JonathanYan 回复weixin_41423378: 不是,是要调用x.notify才行,如果B也调用x.wait只是使两个线程都进入了阻塞状态,而且需要两次x.notify才能唤醒两个线程
11 个月之前 回复
weixin_41423378
银翼的魔术师s 是不是 A调用了 x.wait() , B要必须调用 x.wait() 如果是调用 y.wait() ,A不会醒来
11 个月之前 回复
JonathanYan
JonathanYan 啊说错了,需要notify,wait之后是阻塞状态,竞争锁需要变成就绪状态,通过notify改变状态,另外如果用wait(period)则是在period后自动从阻塞变为就绪状态
11 个月之前 回复

是的,wait()方法调用后,意思时主动放弃所占资源,只有调用notify()和notifyAll()方法才能重新加入队列去竞争资源

0
weixin_41423378
银翼的魔术师s 嗯 是不是 A调用了 x.wait() , B要必须调用 x.wait() 如果是调用 y.wait() ,A不会醒来
11 个月之前 回复
JonathanYan
JonathanYan wait的意思不是释放锁并进入等待队列吗
11 个月之前 回复

图片说明

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!