在研究OJP时,我讨论了Thread wait()方法等主题,根据书中的说法,这部分代码应该抛出IllegalMonitorStateException,因为在同步的对象上调用了wait() ,但我不跟我,任何想法?
public class Syncho {
public void synchoTest(){
ThreadTest test1 = new ThreadTest();
ThreadTest test2 = new ThreadTest();
ThreadTest test3 = new ThreadTest();
ThreadTest test4 = new ThreadTest();
ThreadTest test5 = new ThreadTest();
test1.start();
test2.start();
synchronized(test1){
try{
System.out.println("gere");
//test1 = new ThreadTest();
//test1.start();
wait();
System.out.println("tere");
}catch(Exception x){}
}
//notify();
test3.start();
test4.start();
test5.start();
}
}
实际上“gere”只打印而不是“tere”
我在java 7中使用eclipse
答案 0 :(得分:0)
是的,异常被抛出,正是因为你描述的原因 - 你只是抓住它并吞下它:
catch(Exception x){}
不要那样做。 从不那样做。只是这样做:
catch (Exception x) {
x.printStackTrace();
}
...会告诉你抛出的异常。