Back to Intellij Community

AwaitNotInLoop

java/java-impl/resources/inspectionDescriptions/AwaitNotInLoop.html

2025.3-rc-2634 B
Original Source

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();
    }
  }