黑马程序员技术交流社区
标题:
java里多线程的wait问题
[打印本页]
作者:
tanshion
时间:
2014-6-13 10:26
标题:
java里多线程的wait问题
本帖最后由 tanshion 于 2014-6-13 11:25 编辑
如果一个可被多个线程访问的资源类的某一个synchronized方法里有wait(),当这个wait()被调用时,是让当前进入到synchronized方法的这个线程进入wait,还是这个资源类进入wait?如果是线程进入wait,那为什么不是在线程类上调用wait()而是在资源类里调用(这里的wait()实际上应该是this.wait())?
如果资源类里是这样的
public synchronized void f(){
while(condition){
wait();
}
System.out.println("f() return;")
}
那是不是运行到这个循环的时候,进入wait、等待notify并释放锁,但是这个方法并没有返回(控制台没输出)?
作者:
友来友网
时间:
2014-6-13 10:37
当执行wait(),此线程就暂停了,程序去执行别的线程去了,这个方法并没有执行完
作者:
Jack_Chen
时间:
2014-6-13 11:05
执行wait,肯定是此线程暂停,其后的方法还没有执行,下一步就会去执行其他的线程,当其他线程执行完,就会返回继续执行,和楼上意思一样。
作者:
kongyan4696
时间:
2014-6-13 11:50
void wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
void notify() 唤醒在此对象监视器上等待的单个线程。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2