Inspectopedia Help

'await()' not called in loop

Reports java.util.concurrent.locks.Condition.await() not being called inside a loop.

await() and related methods are normally used to suspend a thread until some condition becomes true. As the thread could have been woken up for a different reason, the condition should be checked after the await() call returns. A loop is a simple way to achieve this.

Example:

void acquire(Condition released) throws InterruptedException { released.await(); }

Good code should look like this:

void acquire(Condition released) throws InterruptedException { while (acquired) { released.await(); } }

Inspection Details

By default bundled with:

IntelliJ IDEA 2024.1, Qodana for JVM 2024.1,

Can be installed with plugin:

Java, 241.14841

Last modified: 12 March 2024