gpt4 book ai didi

java - 带有 wait()、notify() 的 IllegalStateException

转载 作者:行者123 更新时间:2023-12-02 03:31:41 25 4
gpt4 key购买 nike

现在,我正在准备 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() 或 notification() 在不适当的时间被调用...如果我是对的,为什么它是非法时间,如果我错了,那么解释为什么会出现异常..

最佳答案

除非当前线程拥有该对象的监视器,否则您无法对对象进行 wait()。为此,您必须对其进行同步:

synchronized (obj) {

根据javadoc:

公共(public)类 IllegalMonitorStateException扩展运行时异常抛出该异常表示一个线程试图在对象的监视器上等待,或通知在不拥有指定监视器的情况下在对象的监视器上等待的其他线程。

关于java - 带有 wait()、notify() 的 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com