'wait()' while holding two locks
Reports calls to wait()
methods that may occur while the current thread is holding two locks.
Since calling wait()
only releases one lock on its target, waiting with two locks held can easily lead to a deadlock.
Example:
synchronized (lockA) {
synchronized (lockB) {
lockB.wait(); //warning
//thread A is stuck here holding lockA
}
}
synchronized (lockA) { //thread B can't enter the block and release thread A
lockB.notify();
}
- By ID
Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.
WaitWhileHoldingTwoLocks
Inspection Details | |
---|---|
By default bundled with: | |
Can be installed with plugin: | Java, 243.23126 |