IllegalMonitorStateException
全部标签 这个问题在这里已经有了答案:JavaWaitandNotify:IllegalMonitorStateException(2个答案)关闭5年前。我有一个问题。当我在同步块(synchronizedblock)中使用notify()时,我得到IllegalMonitorStateException。谁能帮我解决这个问题?我需要一个线程向第二个线程发送一个字符,然后这个线程必须等待,第二个线程打印这个字符。在第二个线程等待之后,第一个线程再次发送下一个字符主要.java:importjava.util.logging.Level;importjava.util.logging.Logger
importjava.util.LinkedList;importjava.util.Queue;classProducerextendsPubSubimplementsRunnable{@Overridepublicvoidrun(){synchronized(queue){if(queue.size()==99){try{wait();}catch(InterruptedExceptione){e.printStackTrace();}}queue.add(2);try{Thread.sleep(1000);}catch(InterruptedExceptione){e.print
我不明白为什么Java会在这段代码中从主题中抛出异常。有人能给我解释一下吗?classWaitimplementsRunnable{publicvoidrun(){synchronized(Object.class){try{while(true){System.out.println("Beforewait()");wait();System.out.println("Afterwait()");}}catch(InterruptedExceptione){e.printStackTrace();}}}}publicclassObjectMethodInConcurency{publ
我在Java中使用线程时遇到问题(我在Java中使用线程的经验很少,但在C++中使用很多,所以我了解线程的基本概念)。我已经在Java中使用了线程的示例代码,接下来是代码:ExecutorServiceexecutor=Executors.newFixedThreadPool(machines.size());for(Machinem:machines){Runnableworker=newrestartMachine(m.dataformachine());executor.execute(worker);}executor.shutdown();try{executor.awa
但是我在“花名册”对象被更新的任何地方进行同步。怎么会?违规代码:publicRostergetRoster(){if(roster==null){returnnull;}if(!roster.rosterInitialized){try{synchronized(roster){roster.reload();longwaitTime=SmackConfiguration.getPacketReplyTimeout();longstart=System.currentTimeMillis();while(!roster.rosterInitialized){if(waitTime
当运行我们的程序时,我们得到一个类型为java.lang.IllegalMonitorStateException的异常。在Java6API网站上,它说有一个构造函数提供了有关异常的详细信息:IllegalMonitorStateException(Strings)我们如何使用它来更好地了解代码中的错误位置?我们还能做些什么(除了我们目前正在进行的大量调试之外)来查明失败的函数或行吗? 最佳答案 必须在创建异常(构造函数,对吗?)时提供详细信息,如果您不创建它,则无法提供详细信息。您可以分析异常的StackTrace。它显示了被调用
为什么会发生这种情况?问题是监视器对象肯定不是空的,但我们仍然经常遇到这个异常:java.lang.IllegalMonitorStateException:(m=null)Failedtogetmonitorfor(tIdx=60)atjava.lang.Object.wait(Object.java:474)at...引发这种情况的代码是一个简单的池解决方案:publicObjecttakeObject(){Objectobj=internalTakeObject();while(obj==null){try{available.wait();}catch(InterruptedE
为什么会发生这种情况?问题是监视器对象肯定不是空的,但我们仍然经常遇到这个异常:java.lang.IllegalMonitorStateException:(m=null)Failedtogetmonitorfor(tIdx=60)atjava.lang.Object.wait(Object.java:474)at...引发这种情况的代码是一个简单的池解决方案:publicObjecttakeObject(){Objectobj=internalTakeObject();while(obj==null){try{available.wait();}catch(InterruptedE
我不完全理解wait和notify(ofObject)是如何工作的,结果我被迫瘦身将我的尝试记录到以下代码部分。Main.java:importjava.util.ArrayList;classMain{publicstaticMainmain=null;publicstaticintnumRunners=4;publicstaticArrayListrunners=null;publicstaticvoidmain(String[]args){main=newMain();}Main(){runners=newArrayList(numRunners);for(inti=0;iRun
我不完全理解wait和notify(ofObject)是如何工作的,结果我被迫瘦身将我的尝试记录到以下代码部分。Main.java:importjava.util.ArrayList;classMain{publicstaticMainmain=null;publicstaticintnumRunners=4;publicstaticArrayListrunners=null;publicstaticvoidmain(String[]args){main=newMain();}Main(){runners=newArrayList(numRunners);for(inti=0;iRun