问题标签 [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.

0 投票
2 回答
226 浏览

java - 为什么多个线程能够访问同步块?

运行此程序时,我得到了IllegalMonitorStateException因为 Even 线程试图在它没有锁定对象时发出通知isEven。为什么会这样?如果线程锁定了对象,则它应该只能进入同步块内部。

0 投票
1 回答
51 浏览

java - Java 中的 IllegalMonitorStateException

我的IllegalMonitorStateException代码中有一个。

startEmployeeProcess()方法内部我启动一个thread1(EmployeeThread)并在我调用的开关内部thread1.wait()(案例3)

我的代码有什么问题?

请帮助

谢谢

班级:

员工线程

0 投票
0 回答
104 浏览

java - 主动等待替换 - 我的方法在设计上是否正确?

我正在摆脱等待:

我的代码:

编辑:
1)对于所有人-使用它时要小心,wait()和notify()都必须包装在同步块中,否则它将引发IlegalMonitorException,当您在代码中使用它并且仍然再次获得此异常搜索时,有可能在没有此同步块的情况下在其他地方调用另一个通知。感谢评论。
2)我修改了这个问题,因为我的代码没问题,但是 sh** 发生了,我忘记在某处删除一些东西。这工作正常。问题是我的实现正确吗?
有几点我不太确定:

  • 我通过等待摆脱主动等待并通知某个对象
  • 当程序评估进入 while 循环时,线程在对象上处于睡眠状态,线程会做任何事情,主动等待被被动等待取代,因此对 CPU 来说要好得多。
  • 当在 Manager 上发生状态更改并调用其相应的方法 managerStateChanged() 时,它在睡眠线程 MyThread 上调用相同的方法,它将检查它是否是我们正在等待的状态,如果不是,则线程仍在睡眠,如果是,则运行标志更改并唤醒线程,while循环条件不再循环,我们跳出被动等待,线程在while循环后继续其有用的代码
  • 还有一件事需要考虑,它的虚假唤醒,线程可以在 notify 之前被唤醒,我希望这应该不是问题,因为如果它在 notify 之前被唤醒,仍然不满足被动 while 循环条件所以它再次入睡,虚假唤醒应该不是问题。

我的猜测对吗?代码清晰吗?我不是错过了什么应该得到更好的对待吗?我希望不是。感谢您的回复。

0 投票
2 回答
593 浏览

java - 不同线程中的并发(ReentrantLock)

我需要在不同的线程中使用 ReentrantLock。有可能吗?PS 在 secondMethod "lock.unlock()" 中抛出 IllegalMonitorStateException。

编辑:用 java.util.concurrent.locks.Condition 解决!

0 投票
1 回答
50 浏览

java - Java多线程代码给出error-IllegalMonitorException

我正在尝试最近学习的一些多线程概念,但无法运行它。

它给出了 IllegalMonitorStateException 但没有弄清楚为什么会发生错误。

所以关于code-2线程-引用名称-填充器和写入器都共享一个arraylist-filler正在用整数填充arraylist(但将填充到30)并且在填充器和写入器线程添加每个数字之后读取arraylist获取项目将其写入文件,将其从 arraylist 中删除。为了更好地理解注释被添加到代码中。

0 投票
1 回答
424 浏览

java - 非法监视器状态 两个踏板正在等待时出现异常

HI 编写了一个示例程序,用于测试 java 中的等待行为。

我的 Runnable 实现:

在我main喜欢的范围内使用:

运行此程序时,我收到此异常:

0 投票
1 回答
793 浏览

java - notifyAll() 方法上的 java.lang.IllegalMonitorStateException

我仍在按照 oracle 网站的 java 教程学习线程。

关于wait() 和notifyAll(),我写了一些代码。guardedJoy(GuardedBlock guardedBlock)我的预期输出是在 run() 中打印消息 10 次,并在 run方法中将“joy”设置为 false 时在方法中打印“Fun stop by StopFun Thread”消息。

这是我的代码。

run 方法中的代码运行良好,但之后会抛出这样的异常。

我在这个这个网站上经历了几个问题和答案,但无法弄清楚我到底做错了什么。一个帮助是非常有价值的。

谢谢。

0 投票
1 回答
13 浏览

wait - 为什么在类中通知时不抛出 IllegalMonitorStateException

我想知道为什么我不能直接将我的方法中的内容直接写入battle.resume()我的frame.keyPressed()方法中?如果这样做,我会收到 IllegalMonitorStateException,我在网上发现此异常是“抛出以指示线程已尝试在对象的监视器上等待或通知其他线程在对象的监视器上等待而不拥有指定的监视器”,所以我认为它必须直接在您要等待/通知的班级中。

因为我觉得一个例子比 10 行好,所以这里有一个我不明白的简化版本,我不明白为什么我链接的工作和之间的工作/**/工作,如果它会全部工作时间

我的战斗课:

我的框架类:

0 投票
0 回答
12 浏览

multithreading - 为什么在对实例变量进行同步时,此代码会给出 IllegalMonitor 异常

如果我在lock对象上进行同步,它可以正常工作。但是,如果我对number整数进行同步,则会引发异常。请帮忙。下面是我的代码:

0 投票
1 回答
100 浏览

java - 调用 notifyAll 时出现 IllegalMonitorStateException

我有一段代码在调用 notifyAll 时给出 IllegalMonitorException。在 enQueue() 时,线程添加数据并抛出非法监视器异常。

BlockingQueue.class :

主类:

生产者类:

消费者类:

输出 :

添加 94

线程“生产者”java.lang.IllegalMonitorStateException 中的异常