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.
class MyThread extends Thread{
@Override
public void run(){
synchronized(this){
// ...
notify(); // Noncompliant
}
}
}
class MyThread extends Thread{
@Override
public void run(){
synchronized(this){
// ...
notifyAll();
}
}
}