你好我試圖讓使用Java套接字programming.My服務器多人遊戲使用多線程enviornment.The問題是,我要當兩個玩家將連接到服務器,那麼他們可以繼續前頁其他明智的,不要.. 。對於這個原因,我有2次運行使用循環和接受來自環兩clients.and connectons我必須使用線程對象,並調用它的wait方法..When循環是結束我有打電話obj.notifyALl方法,以便目前的線程和以前的三分鐘清醒,他們將開始工作但我得到這個例外......任何想法或建議,歡迎.....拋出:IllegalMonitorStateException injava
0
A
回答
0
線程應該呼籲obj.wait()
在obj.notifyAll()
爲了工作。它應該從塊中調用。
synchronized (obj) {
//While condition is not true wait
}
JavadoC# IllegalMonitorStateException
拋出的異常表明某一線程已經試圖等待對象的監視器,或者不擁有指定的監控,通知其他線程正在等待對象的監視器上。
3
簡而言之:你正在等待或通知還沒有同步的對象上。
當前線程必須擁有該對象的監視器。線程釋放此監視器的所有權,並等待另一個線程通知對通知方法或notifyAll方法的調用,以便通知通過此對象監視器等待的線程喚醒。該線程然後等待,直到它可以重新獲得監視器的所有權並恢復執行。
如在一個參數的版本,中斷和雜散喚醒是可能的,而且這種方法應該總是在一個循環中使用:
synchronized (obj) {
while (<condition does not hold>)
obj.wait();
... // Perform action appropriate to condition
}
拋出:IllegalMonitorStateException - 如果當前線程不是所有者該對象的監視器。
恕我直言它可能你應該使用concurrency library而不是等待/通知。
相關問題
- 1. driver.wait()拋出IllegalMonitorStateException
- 2. 原因拋出:IllegalMonitorStateException
- 3. 拋出:IllegalMonitorStateException - 的CyclicBarrier
- 4. 拋出:IllegalMonitorStateException螺紋
- 5. 的Java notifyAll的:拋出:IllegalMonitorStateException
- 6. 爲什麼會拋出IllegalMonitorStateException?
- 7. 此代碼可以拋出IllegalMonitorStateException
- 8. IllegalMonitorStateException拋出synchronized(lock){lock.notify();} ...爲什麼?
- 9. 解鎖上的ReentrantLock而不拋出:IllegalMonitorStateException
- 10. 爲什麼此方法拋出IllegalMonitorStateException?
- 11. 大衆拋出:IllegalMonitorStateException上線等待
- 12. 爲什麼我的代碼拋出IllegalMonitorStateException?
- 13. 何時拋出IllegalMonitorSttateException? (),Object.notify(),Object.notifyAll()方法拋出IllegalMonitorStateException。
- 14. 將數據寫入Android藍牙輸出流拋出:IllegalMonitorStateException
- 15. 讀取XML injava
- 16. IllegalMonitorStateException不會拋出它應該在哪裏
- 17. IllegalMonitorStateException
- 18. 需要更好地瞭解Java的同步對象的行爲,並拋出:IllegalMonitorStateException
- 19. 創建對象時出現IllegalMonitorStateException
- 20. Java同步-IllegalMonitorStateException
- 21. 爲什麼IllegalMonitorStateException?
- 22. IllegalMonitorStateException代碼
- 23. IllegalMonitorStateException Java Android
- 24. IllegalMonitorStateException notify()和wait()
- 25. libgdx iOS httpUrlConnection.connect throw IllegalMonitorStateException
- 26. 通知給予IllegalMonitorStateException
- 27. 如何解決IllegalMonitorStateException
- 28. 通知()調用IllegalMonitorStateException
- 29. 拋出拋出的錯誤
- 30. 拋出異常不拋出
請張貼一些代碼,並顯示我們的堆棧跟蹤。這會讓別人更容易幫助你。 – Paul