当前位置: 技术问答>java相关
关于wait()的一个问题,急急急
来源: 互联网 发布时间:2015-03-07
本文导语: 当线程A在一个同步方法中执行到wait()后,放弃CPU和对象锁,并退到该对象的等待池中。当另外一个线程B执行了notify(),且唤醒的是线程A,A再获得对象锁转入准备状态,最后被调度到运行状态。那么请问进...
当线程A在一个同步方法中执行到wait()后,放弃CPU和对象锁,并退到该对象的等待池中。当另外一个线程B执行了notify(),且唤醒的是线程A,A再获得对象锁转入准备状态,最后被调度到运行状态。那么请问进入运行状态这个时候,线程A是重新执行一遍这个同步方法呢,还是在wait()后接下去继续执行呢?
最好举个例子讲讲,谢谢了。
最好举个例子讲讲,谢谢了。
|
public Object getSth(){
if(vector.size()==0) wait();
synchronize(vector){
Object o = vector.firstElement();
vector.removeElementAt(0);
return o;
}
}
public void returnSth(Object sth){
synchronize(vector){
vector.add(sth);
notifyAll();
}
}
if(vector.size()==0) wait();
synchronize(vector){
Object o = vector.firstElement();
vector.removeElementAt(0);
return o;
}
}
public void returnSth(Object sth){
synchronize(vector){
vector.add(sth);
notifyAll();
}
}
|
上面的程序与原题不一致。
while应当和notifyAll配合。
notify,我想用if就可以了。
while应当和notifyAll配合。
notify,我想用if就可以了。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。