首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

关于一个线程的有关问题2 求解

2012-03-14 
关于一个线程的问题2 求解public class TestToSCJP116 {publicvoid waitForSignal(){Object object new

关于一个线程的问题2 求解
public class TestToSCJP116 {
public void waitForSignal(){
Object object = new Object();
synchronized(this){
try{
this.wait();//如果把行替换成object.wati();
  //为什么会跑出一个java.lang.IllegalMonitorStateException运行异常?
  }catch(InterruptedException e1){
System.out.println("123");
}

}
}
public static void main(String args[]){
TestToSCJP116 t1 = new TestToSCJP116();
t1.waitForSignal();

}
}
不懂求解 谢谢

[解决办法]
Object.wait()方法的执行要求线程拥有Object的锁(Monitor)

上述原代码中synchronized(this)使得执行this.wait()的时候,线程拥有this对象(t1)的锁,因此执行正常。

当修改为object.wait()的时候,由于线程并未拥有object的锁,因此报错

热点排行