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 ]
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 ]