'wait()' not called in loop
Reports calls to wait()
that are not made inside a loop.
wait()
is normally used to suspend a thread until some condition becomes true. As the thread could have been waken up for a different reason, the condition should be checked after the wait()
call returns. A loop is a simple way to achieve this.
Example:
class BoundedCounter {
private int count;
synchronized void inc() throws InterruptedException {
if (count >= 10) wait();
++count;
}
}
Good code should look like this:
class BoundedCounter {
private int count;
synchronized void inc() throws InterruptedException {
while (count >= 10) wait();
++count;
}
}
Locating this inspection
- 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.
WaitNotInLoop- Via Settings dialog
Path to the inspection settings via IntelliJ Platform IDE Settings dialog, when you need to adjust inspection settings directly from your IDE.
Inspection Details | |
---|---|
By default bundled with: | |
Can be installed with plugin: | Java, 242.22892 |
Last modified: 11 September 2024