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

Available in:

IntelliJ IDEA 2023.3, Qodana for JVM 2023.3

Plugin:

Java, 233.SNAPSHOT

Last modified: 13 July 2023