带有 wait()、notify() 的 IllegalStateException

IllegalStateException with wait(),notify()

现在,我正在准备 java ocajp 8 认证,只是查看了一些转储,它说以下代码抛出 IllegalStateException;

代码如下`

void waitForSignal() throws Exception{
    Object obj = new Object(); 
    synchronized (Thread.currentThread()) {
        obj.wait(); 
        obj.notify(); 
    } 
}` 

前面的代码都是它提供的,没有别的,为什么这里会出现异常,事实上我对多线程知之甚少。 并根据 java 文档

IllegalStateException : Signals that a method has been invoked at an illegal or inappropriate time. In other words, the Java environment or Java application is not in an appropriate state for the requested operation.

所以我想 wait() 或 notify() 在不适当的时间被调用...如果我是对的为什么是非法时间,如果我错了,那么解释为什么会出现异常..

除非当前线程拥有该对象的监视器,否则您不能在该对象上等待 ()。为此,您必须对其进行同步:

synchronized (obj) {

根据 javadoc :

public class IllegalMonitorStateException 扩展 RuntimeException 抛出以指示线程已尝试在对象的监视器上等待或通知其他线程在对象的监视器上等待而不拥有指定的监视器。