Inspectopedia Help

'wait()' or 'notify()' is not in synchronized context

Reports calls to wait(), notify(), and notifyAll() that are not made inside a corresponding synchronized statement or synchronized method.

Calling these methods on an object without holding a lock on that object causes IllegalMonitorStateException. Such a construct is not necessarily an error, as the necessary lock may be acquired before the containing method is called, but it's worth looking at.

Example:

class Sync { private final Object lock = new Object(); void test() throws InterruptedException { synchronized (this) { lock.wait(); // 'lock.wait()' is not synchronized on 'lock' } } }

Inspection Details

By default bundled with:

IntelliJ IDEA 2024.1, Qodana for JVM 2024.1,

Can be installed with plugin:

Java, 241.16690

Last modified: 29 April 2024