This week's book giveaway is in the General Computing forum. We're giving away four copies of Arduino in Action and have Martin Evans, Joshua Noble, and Jordan Hochenbaum on-line! See this thread for details.
wait,notify came into existance due to old Thread methods suspend, stop,resume.
These methods have failed to manage locks obtained. causing deadlocks.
To work with or manage locks wait and notify are introduced.
wait() -> releases the obtained lock and waits to get notified. notify() -> notifies another thread(s) waiting on that object.
We can't handle the locks out side the synchronized() block. we can't creep into monitor state.
Thats wait,notify placed in Object sothat we can effectively manage the locks obtained on any Object. [ August 11, 2007: Message edited by: Srinivasan thoyyeti ]
Thanks & Regards,<br />T.Srinivasan,<br />SCWCD 1.4(89%),SCJP 5.0(75%)<br />"That service is the noblest which is rendered for its own sake." - Mahatma Gandhi
Joined: Dec 07, 2004
Just to make it clearer:
In the above programme I've commented out the synchronised block around wait() and notify()[I know it will give a run time exception] just for a hypotethic scenario; I don't seem to see the importance of lock in calling wait and notify; i.e. even without owning or releasing the lock, the waiting / notifying behaviour should happen. I know there is a flawin my thought process, please explain.
I will try it with a more complex example, to show, why it is useful to remind the programmer to use synchronisation. The following code contains a problem (Besides that it doesn't use synchronisation for wait and notify). Can you find it? [ August 11, 2007: Message edited by: Manfred Klug ]
Joined: Feb 15, 2007
Manfred Klug ,
Do you think wait,notify can be called out-side synchronized context ???
Joined: Jun 04, 2007
Originally posted by Srinivasan thoyyeti: Do you think wait,notify can be called out-side synchronized context
If you read the text, you will see, that I know that this will not work. It is only for demonstration purposes.