В приложении (J2ME: CLDC 1.0, MIDP 2.0, работа с нитями соответствует JDK 1.1) возникает IllegalMonitorStateException. Последовательность действий, приводящих к нему, нашёл, но вот когда именно валится пока никак не пойму, так как ошибка гарантировано происходит только на одном очень тормозном телефоне, на остальных поймал только один раз.
Все вызовы wait и notify точно корректны и нить обладает монитором объекта, на котором вызывает эти методы, объекты для синхронизации объявлены final.
В каких ещё случаях ещё может возникать это исключение?
Есть сомнения насчёт корректности двойной синхронизации, когда код что-то типа этого:
synchronized( obj1 )
{
//blablabla
synchronized( obj2 )
{
obj2.notifyAll();
}
}
Такая конструкция нормальна?