Я знаю, что этой ветке уже почти 2 года, но все еще нужно закрыть ее, так как я также пришел на этот сеанс вопросов и ответов с той же проблемой ...
Пожалуйста, прочитайте это определение invalidMonitorException снова и снова ...
IllegalMonitorException генерируется, чтобы указать, что поток пытался ждать на мониторе объекта или уведомлять другие потоки, ожидающие на мониторе объекта, не имея указанного монитора.
Эта строка снова и снова говорит, что IllegalMonitorException возникает, когда возникает одна из двух ситуаций ....
1> ждать на мониторе объекта, не имея указанного монитора.
2> уведомить другие потоки, ожидающие на мониторе объекта, не имея указанного монитора.
Кто-то, возможно, получил ответы ... а кто нет, тогда, пожалуйста, проверьте 2 утверждения ...
синхронизировано (объект)
Object.wait ()
Если оба объекта одинаковы ..., тогда не может быть никакого незаконного исключения.
Теперь снова прочитайте определение IllegalMonitorException, и вы не забудете его снова ...