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.
class MyThread implements Runnable {
Object lock = new Object();
@Override
public void run() {
synchronized(lock) {
// ...
lock.notify(); // Noncompliant
}
}
}
class MyThread implements Runnable {
Object lock = new Object();
@Override
public void run() {
synchronized(lock) {
// ...
lock.notifyAll();
}
}
}