Reports Object.notify() or Object.notifyAll() being called without any detectable state change occurring.

Normally, Object.notify() and Object.notifyAll() are used to inform other threads that a state change has occurred. That state change should occur in a synchronized context that contains the Object.notify() or Object.notifyAll() call, and prior to the call. While not having such a state change isn't necessarily incorrect, it is certainly worth examining.

Example:


  synchronized (this) {
    notify();
  }
  // no state change
  synchronized (this) {
    notify(); // this notify might be redundant
  }