``++notify++`` and ``++notifyAll++`` both wake up sleeping threads, but ``++notify++`` only rouses one, while ``++notifyAll++`` rouses all of them. Since ``++notify++`` might not wake up the right thread, ``++notifyAll++`` should be used instead.


== Noncompliant Code Example

----
class MyThread extends Thread{

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


== Compliant Solution

----
class MyThread extends Thread{

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


== See

* https://wiki.sei.cmu.edu/confluence/x/MTdGBQ[CERT, THI02-J.] - Notify all waiting threads rather than a single thread


ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::comments-and-links.adoc[]
endif::env-github,rspecator-view[]
