notify vs notifyAll in Java
Read more »
What is difference between notify and notifyAll method is one of the tricky Java question, which is easy to answer but once Interviewer ask followup questions, you either got confused or not able to provide clear cut and to the point answers. Main difference between notify and notifyAll is that notify method will only notify one Thread and notifyAll method will notify all Threads which are waiting on that monitor or lock. By the way this is something you have been reading in all over places and to be frank, this statement despite being correct is not complete and its very difficult to understand difference between notify vs notifyAll by just reading this statement. Lot of questions comes in mind like
Which thread will be notified if I use notify()?
How do I know how many threads are waiting, so that I can use notifyAll() ?
How to call notify()?
What are these thread waiting for being notified etc.
Actually discussion of notify and notifyAll is incomplete without discussing wait method in Java and I had touched based on this on my earlier article why wait and notify must be called from synchronized context. In order to get answer of those questions and understand difference between notify and notifyAll we will use a simple Java Thread example using wait and notify code :