Synopsis: | Call Thread.notifyAll() rather than Thread.notify() |
Language: | Java |
Severity Level: | 1 |
Category: | Design |
Description: |
Thread.notify() awakens a thread monitoring the object. If more than one thread is monitoring, then only
one is chosen. The thread chosen is arbitrary; thus it's usually safer to call notifyAll() instead.public class Foo { void bar() { x.notify(); // If many threads are monitoring x, only one (and you won't know which) will be notified. // use instead: x.notifyAll(); } } |