void waitForSignal(){
Object ob =new Object();
synchronized (Thred.currentThread()) {
try {
ob.wait();
ob.notify();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
此方法抛出 IllegalMonitorStateException。有人可以解释一下为什么会这样吗?
提前致谢
最佳答案
您应该只对已获取锁定的对象调用 wait
。
在您的代码中,您已获取了 Thread.currentThread()
上的锁,但您在 ob
上调用它,这将抛出 IllegalMonitorStateException
>.
因此,您应该将同步块(synchronized block)更改为:-
synchronized (ob) {
}
关于java - 此代码可能会引发 IllegalMonitorStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591517/