7.3.4 Unerwartete IllegalMonitorStateExceptions

Beim Einsatz von Multithreading und der Kommunikation von Threads treten zum Teil unerwartet java.lang.IllegalMonitorStateExceptions auf. Manche Entwickler sind dann ratlos. Wie kann es dazu kommen?

Eine solche Exception wird dadurch ausgelöst, dass der Thread, der eine der Methoden wait(), notify() bzw. notifyAll() aufruft, zu der Zeit nicht den Lock des zugehörigen Objekts besitzt. Diese Tatsache kann zur Kompilierzeit nicht geprüft werden und führt erst zur Laufzeit zu der genannten Exception.

Ein kurzes Beispiel hilft dabei, diesen Sachverhalt zu verstehen. In nachfolgendem Listing wird über das Objekt lock synchronisiert und auch der Aufruf von notifyAll() geschieht augenscheinlich auf diesem ...

Get Der Weg zum Java-Profi now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.