IllegalMonitorStateException
全部标签 为什么这个测试程序会导致java.lang.IllegalMonitorStateException?publicclasstest{staticIntegerfoo=newInteger(1);publicstaticvoidmain(String[]args){synchronized(foo){foo++;foo.notifyAll();}System.err.println("Success");}}结果:Exceptioninthread"main"java.lang.IllegalMonitorStateExceptionatjava.lang.Object.notifyA
为什么这个测试程序会导致java.lang.IllegalMonitorStateException?publicclasstest{staticIntegerfoo=newInteger(1);publicstaticvoidmain(String[]args){synchronized(foo){foo++;foo.notifyAll();}System.err.println("Success");}}结果:Exceptioninthread"main"java.lang.IllegalMonitorStateExceptionatjava.lang.Object.notifyA
当调用内置方法nextGaussian抛出一个IllegalMonitorStateException:unlockofunownedmonitordoubledispersion=RAND.nextGaussian()*0.2;在里面@Overridepublicvoidstroke(Canvasc,floatx,floaty){}这里调用caseMotionEvent.ACTION_MOVE:style.stroke(mCanvas,x,y);break;}returntrue;}然后在Surface.java@OverridepublicbooleanonTouchEvent(M
我定义了一个全局静态对象作为同步锁。publicstaticObjectConfirmationSynObj=newObject();下面的函数是我写的,但是它抛出一个IllegalMonitorStateException。synchronized(Config.ConfirmationSynObj){newThread(newRunnable(){@Overridepublicvoidrun(){//thisisahttprequestappSignInfo=getAPKSignature(context,pkinfo.packageName);Config.Confirmatio
我有一段代码(简化):if(reentrantLockObject.isLocked()){reentrantLockObject.unlock();}其中reentrantLockObject是java.util.concurrent.locks.ReentrantLock。有时我会得到IllegalMonitorStateException。它接缝在check和unlock()调用之间释放了锁。我怎样才能防止这个异常(exception)? 最佳答案 isLocked返回是否任何线程持有锁。我想你想要isHeldByCurren
我们今天遇到了一个非常令人惊讶的异常。在同步块(synchronizedblock)内部,我们调用wait()并抛出IllegalMonitorStateException。这是什么原因造成的?这发生在经过充分测试的开源代码中:http://svn.apache.org/viewvc/river/jtsk/trunk/src/com/sun/jini/jeri/internal/mux/Mux.java?view=markup#l222我们消除了明显的原因:我们是否在正确的变量上同步?是的,它是muxLock它是一个可变变量吗?不,muxLock是最终的我们是否使用了任何可能影响监视器
我正在使用ProgressDialog。当用户关闭ProgressDialog时,我需要停止线程。不幸的是,它给出了一个异常(exception)。在内部类中:classUpdateThreadextendsThread{publicvoidrun(){while(true){count=adapter.getCount();try{mHandler.post(newRunnable(){publicvoidrun(){Log.i(TAG,count+"count");progressDialog.setMessage(count+"Devicefound");}});Thread.s
我有2个矩阵,我需要将它们相乘,然后打印每个单元格的结果。一旦一个单元格准备好,我就需要打印它,但是例如,即使[2][0]的结果首先准备好,我也需要在单元格[2][0]之前打印[0][0]单元格.所以我需要按订单打印。所以我的想法是让打印机线程等待,直到multiplyThread通知它正确的单元格已准备好打印,然后printerThread将打印单元格并返回等等等等..所以我有这个做乘法的线程:publicvoidrun(){intcountNumOfActions=0;//HowmanymultiplicationshavewedoneintmaxActions=randomize
我在java中为我的程序使用多线程。我已经成功运行线程,但是当我使用Thread.wait()时,它会抛出java.lang.IllegalMonitorStateException。如何让线程等到收到通知? 最佳答案 您需要在synchronizedblock中才能使Object.wait()工作。另外,我建议查看并发包,而不是老式的线程包。他们更安全,更安全easiertoworkwith.编辑我假设您的意思是Object.wait()因为您的异常(exception)是当您尝试在不持有对象锁定的情况下获得访问权限时发生的情况。