问题标签 [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 - 为什么 notifyAll() 在 Integer 上同步时会引发 IllegalMonitorStateException?
为什么这个测试程序会导致java.lang.IllegalMonitorStateException
?
结果:
java - IllegalMonitorStateException
什么可能导致我在这段代码中得到 IllegalMonitorStateException
我有点困惑,因为据我所知,正在运行的线程必须对调用通知的对象进行监控。在我看来,我的代码不会错,但不知何故。
multithreading - Java中的线程同步,IllegalMonitorStateException
我正在尝试同步两个线程-“主”线程和一个可运行线程。我得到了 IllegalMonitorStateException,但我不完全理解“你没有对象的锁”是什么意思。
这是我的代码:
java - 什么会导致同步块内部的 IllegalMonitorStateException?
我们今天遇到了一个非常令人惊讶的异常。在同步块内部,我们调用 wait() 并抛出IllegalMonitorStateException
. 什么会导致这种情况?
这发生在经过充分测试的开源代码中:http: //svn.apache.org/viewvc/river/jtsk/trunk/src/com/sun/jini/jeri/internal/mux/Mux.java ?view=markup #l222
我们消除了明显的原因:
- 我们是否在正确的变量上同步?是的,它是
muxLock
- 它是一个可变变量吗?不,
muxLock
是最终的 - 我们是否使用了任何可能影响监视器行为的奇怪“-XX:”JVM 标志?不,但我们正在通过 JNI 启动嵌入在 C++ 应用程序中的 JVM。
- 这是一个奇怪的JVM吗?不,这是 Sun 的 1.6.0_25 win/x64 JRE
- 这是一个已知的 JVM 错误吗?在http://bugs.sun.com/bugdatabase找不到任何相关内容
所以,我试图想出更多牵强的解释。
- 未捕获的内存不足错误会导致监视器状态被搞砸吗?我们正在研究这个,但我们还没有看到内存错误的证据。
更新:(基于评论)
我还从堆栈跟踪和断点验证了当抛出异常时线程确实在同步块内。其他一些不相关的代码不会发出异常(除非某些东西真的让 Eclipse 感到困惑!)
java - 餐饮哲学家任务。将我的概念转化为代码
我对 Java 线程很陌生。尝试使用Java的同步概念来做死锁机制。这其中存在一些问题。我想知道我应该如何改进我的代码。我的目标是避免死锁。
编辑: eat()
方法请查看
java - 在作业调度程序中使用 wait() 时出现 IllegalMonitorStateException
我正在开发一个基于 Java RMI 的项目,该项目具有Client-->Job Scheduler--> Server structure
.
我在作业调度程序类中有两种方法,如下所示。注释解释了每一行代码的用途。
我在第一次调用wait()
in 方法时收到 IllegalMonitorStateException acceptJob()
。任何想法,如何解决这个问题。
谢谢,吉腾
java - IllegalMonitorStateException notify() 和 wait()
我有个问题。当我notify()
在同步块中使用时,我得到 IllegalMonitorStateException。谁能帮我解决这个问题?
我需要一个线程将一个字符发送到第二个线程,然后这个线程必须等待,第二个线程打印这个字符。在第二个线程等待之后,第一个线程再次发送下一个字符
主.java:
java - 带有条件的 IllegalMonitorStateException
所以我正在尝试编写一个打印出以下输出的程序:
44
33
22
11
该程序应该是多线程的,并且必须使用锁来防止竞争条件。它还必须利用 Condition 以便当线程要打印的数字与变量 threadnum(必须打印的下一个数字)不对应时,它必须等待。我已经得到了大部分它,除了当我尝试运行它时我得到 IllegalMonitorStateExceptions 并且我不确定是什么导致它,也不知道如何修复它。我会很感激一些帮助。提前致谢。
主要类:
java - 无法在 wait() 上放置线程 - IllegalMonitorStateException
背景:
我有一个微型机器人(这些扩展Thread
类)的应用程序,它们在地图的节点上相互处理。我正在尝试对进入节点的逻辑进行编程。该节点负责执行在该节点相遇的两个机器人之间的交易。
我想在节点中编码的逻辑如下:
- 机器人 A 来了。
- 如果节点上存在另一个 Bot(例如 Bot B)
- 然后在 Bot A 和 Bot B 之间促成交易。
- ELSE告诉 Bot A 等到另一个 Bot 到达节点。
我的尝试
这是我对上述逻辑进行编码的尝试。
但是当我运行它时,我得到IllegalMonitorStateException
了trader.wait()
在线。我研究过,显然这是一个常见的问题。所以我尝试了,synchronized(trader)
但这只是冻结了一切,我什至无法调试代码,因为一切都被冻结了。
java - 无法从 GUI 线程获取字符串到 java 中的“逻辑”线程
我一直在编写一个程序,它可以搜索一个数字列表,以找到与某个其他数字相加的那些。那里没有问题,算法虽然可能不是很有效,但很实用。
现在必须从文本文件中获取数字列表,但我一直在尝试这样做,以便用户可以将列表复制粘贴到 TextArea 中,按 Enter,然后让程序将字符串发送回普通(非 GUI)线程。
为此,我遵循了这个例子(最佳答案)。我使用的是按键事件而不是按钮按下,以及字符串而不是链接列表,但除此之外,非常相似。
我创建和运行 TextDemo 的代码(是的,我改编了一个教程程序):
TextDemo 本身(减去免责声明,请不要提醒 Oracle :)):
当我运行代码时,它似乎可以工作,直到我按下回车键并且我的程序崩溃了。错误代码(我只包括前 5 行,完整版在这里:http: //img.photobucket.com/albums/v242/ChaosGuide/illegalmonitorstateexception.png):
这是我第一次做任何涉及线程的事情,所以我真的不明白我做错了什么。
任何帮助是极大的赞赏。