## Why is this an issue?

`notify` and `notifyAll` both wake up sleeping threads waiting on the object’s monitor, but `notify` only wakes up one single thread, while `notifyAll` wakes them all up. Unless you do not care which specific thread is woken up, `notifyAll` should be used instead.

### Noncompliant code example

    class MyThread implements Runnable {
      Object lock = new Object();

      @Override
      public void run() {
        synchronized(lock) {
          // ...
          lock.notify();  // Noncompliant
        }
      }
    }

### Compliant solution

    class MyThread implements Runnable {
      Object lock = new Object();

      @Override
      public void run() {
        synchronized(lock) {
          // ...
          lock.notifyAll();
        }
      }
    }

## Resources

- CERT, THI02-J. - Notify all waiting threads rather than a single thread