问题标签 [illegalmonitorstateexcep]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - IllegalMonitorStateException in code
I am getting IllegalMonitorStateException
monitor exception in this code. As per my understanding, because of synchronized block around args
which is string array object, current thread must have acquired the lock and with the wait method, I am release the lock.
Can someone explain me the reason behind this exception?
java - 通知给 IllegalMonitorStateException
我对多线程的了解很差。
我期望下面的程序可以完美运行,但它不工作并产生以下异常。
Java 文件
我认为在 callC() 方法内部,C 类的对象,即 cObj 进入等待状态,同时控制将转到 callD() 方法并在那里调用 cObj.notify(); 因此,这将唤醒等待对象 cObj 的等待线程。
但它给了我例外。我认为我的问题的解决方案可以是: Java: IllegalMonitorStateException on notify()
但我没有正确理解它。
请指导我哪里出错了。
java - That IllegalMonitorStateException...thread not owning the object? Can't be, there's only one
I have this class, which is a basic approach to a file locking utility (doesn't interact with the locks from the OS tho). The idea is to have a static HashMap which stores pair of references to File objects that are used by the application with binary semaphores. Upon first access to a new file the pair is stored into the variable. The problem is that the .wait() line throws IllegalMonitorStateException, and I can't understand why, because I've created a project to test this class with only one thread, so it's impossible that the thread accessing the method doesn't own the object, isn't it?
My intention was that the methods weren't synchronized, but since I started receiving this exception, I changed them to synchronized so they theoretically make sure that the thread entering them owns the resources used, but it's not working, the same exception arises.
Exception trace:
Exception in thread "main" java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:503)
at org.lsp.io.files.FileLocker.getLock(FileLocker.java:18)
at org.lsp.main.Main.main(Main.java:9)
Called with
java - 同步块内的 IllegalMonitorStateException
虽然我已经在同步块中写了等待。我越来越IllegalMonitorStateException
。那是什么原因呢?
java - 暂停图形?
所以我有这个 JPanel 图形代码:
在 for 循环(第二个)中,我想暂停半秒,这样你就可以看到它在绘制每个图块。问题是,当我使用
在第二个 for 循环之后,它只会永远停止整个事情。如果我使用
它不断发送垃圾邮件
在控制台中。是的,它被 try/catch 包围。我怎样才能暂停这个?
java - 创建对象时出现 IllegalMonitorStateException
IllegalMonitorStateException
当我尝试创建对象的实例时,我得到了。代码如下所示:
更多信息:
实际应用程序由 2 个通过 JNI 交互的程序(C++ 和 java)组成。我遇到异常的情况如下。
- c++ 程序要求 java 连接到服务器。(这是一个非阻塞操作)
- Java 程序通知 c++ 连接成功。(在一个新线程中,以便 java 可以继续执行其他任务)
- 当接收到连接成功时,c++程序要求java登录
- 出现异常。
我应该注意,这个异常只发生在这种特殊情况下,如果我在连接成功后的某个时间调用 login 一切正常。
我试过的:
- 一开始通知连接成功不是在新线程中,但是创建线程并没有解决问题。
- java登录代码有一些同步的东西,但删除它们并用一个简单的日志替换它仍然会产生问题。
编辑:
这是堆栈跟踪:
Phoenix.client.ClientAPI.NativeInterface.NativeAPIEventListener.onConnectingFinished(Native Method) Phoenix.client.ClientAPI.NativeInterface.NativeAPIEventListener.access$000(NativeAPIEventListener.java:12) Phoenix.client.ClientAPI.NativeInterface.NativeAPIEventListener$1.run(NativeAPIEventListener.java :30) java.lang.Thread.run(未知来源)
java - 在 Integer 上同步时 notify() 上的 IllegalMonitorStateException
我是在 Java 中使用 wait() 和 notify() 的新手,我收到了 IllegalMonitorStateException。
主要代码
我得到一个 IllegalMonitorStateException 什么 state.notify() 被调用。有任何想法吗?
编辑:根据下面的答案,这里是有效的代码。作为旁注,我首先尝试使用与使用整数有相同问题的枚举。
java - awaitTermination 函数上的 IllegalMonitorStateException
我在 Java 中使用线程时遇到问题(我对 Java 中的线程几乎没有经验,但在 C++ 中却很多,所以我了解线程的基本概念)。我在 Java 中为线程使用了示例代码,接下来是代码:
restartMachine()
正在重新启动一些远程机器,并且机器没有以任何方式连接,传递给 Runnable 的数据是给定机器的 IP 地址,然后在该机器上本地执行的命令。
接下来是我在执行这段代码时遇到的错误:
从上面的代码调用函数 awaitTermination() 会引发异常。据我了解,从我看到的各种示例来看,这段代码应该没有任何问题。
跟踪表明错误是在调用函数 mainLock.unlock();但据我了解,只有主线程会执行该行,所以我不知道为什么会出现 IllegalMonitorStateException,并且程序中没有关于线程的其他代码(所以我基本上只使用库中的代码)
我会很感激任何帮助,我知道关于这个问题已经回答了很多问题(这个例外),但我不知道这里有什么问题。
multithreading - 什么时候抛出 IllegalMonitorStatateException?
Object.wait()、Object.notify()、Object.notifyAll() 方法抛出 IllegalMonitorStateException。如果当前线程不是此对象监视器的所有者,则会引发此异常。但是,如果没有得到对象的监视器天气当前线程将能够在任何对象上执行等待/通知/通知全部,就不清楚了吗?O/w 非法监视器状态的机会是什么?
感谢 scottb 的建议。感谢海诺的回复。我得到的另一个疑问是关于成为对象监视器的所有者:
线程通过以下方式之一成为对象监视器的所有者: • 通过执行该对象的同步实例方法。• 通过执行在对象上同步的同步语句的主体。• 对于Class 类型的对象,通过执行该类的同步静态方法。
前两个陈述被理解。但是 class 类型的对象的基本原理是什么?
java - IllegalMonitorStateException Java
我正在为大学做一些工作,我们必须用 Java 开发一个监视器,它可以让我们相互排斥和同步资源。这个监视器的大脑是一个用 Petri 网建模的系统,它为我们提供了进程之间的同步。此监视器必须有一个阻塞进程队列(无法访问监视器)和一个条件变量队列(如果此进程未同步)。当线程被阻塞(被红绿灯)时,它们被保存在一个向量中,然后被一个 FIFO 策略唤醒。当一个线程即将退出监视器时,您想唤醒一个休眠线程在一个 IllegalMonitorStateException 向量中产生(在 notify() 中的类 SemaforoFIFO 的 Signal() 方法中)并且不知道原因时,就会出现问题。我读了很多关于等待()和通知()但找不到解决方案。我确定问题是我不知道这个主题和我的想法,但希望可以让我理解这个问题并在未来为我服务。谢谢你。
原谅我的英语。我来自阿根廷,使用谷歌翻译。再见
下面是代码:
Vehiculo 类:初始化处理 Petri 网中不同转换的线程(与资源交互)。它们具有一个包含所有转换的数组。
Class Monitor:负责提供互斥和同步过程。
类procesadorPetri:负责取你要拍摄的车辆的过渡号,并验证本次拍摄的条件是否存在。如果条件不满足,线程应该休眠。否则拍摄并更新系统状态。
varCondicional 类:负责提供进程的同步。
semaforoFIFO 类:负责在监视器内提供互斥。
这是我运行程序时遇到的错误:
班长:
varCondicionales 类:
类 semaforoFIFO:
类车辆:
类procesadorPetri:
}
主类: