This week's giveaway is in the EJB and other Java EE Technologies forum. We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan on-line! See this thread for details.
In this case if I create two instances of ThreadTest and call the method start().
The output of this code was :
My question is if the first thread calls goToWait() method then it goes to wait state i.e call to wait method does not return.
As the method is synchronised it allows only one thread to call goToWait() method. So concept wise when the first thread is in the wait mode at(// 1) then it should not allow any other thread to enter goToWait() method.
But in this case we see both the threads are in wait state. I think only one thread should be in wait state.
The wait() method releases the lock before going into the "wait state," so that in fact it is entirely possible for two methods to be waiting at the same time. If wait() didn't release the lock, then only one thread could ever be waiting for a given monitor, right?
wait() won't return without re-acquiring the same lock. [ February 01, 2005: Message edited by: Ernest Friedman-Hill ]