wood burning stoves 2.0*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Thread wait() Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCA/OCP Java SE 7 Programmer I & II Study Guide this week in the OCPJP forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Thread wait()" Watch "Thread wait()" New topic
Author

Thread wait()

jibs parap
Ranch Hand

Joined: Dec 07, 2004
Posts: 134
Why does it say that wait() and notify() are to be called from a synchronized context? Whats the implication of it?

Can anyone explain please.
Srinivasan thoyyeti
Ranch Hand

Joined: Feb 15, 2007
Posts: 557
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, T.Srinivasan
SCWCD 1.4(89%), SCJP 5.0(75%)
jibs parap
Ranch Hand

Joined: Dec 07, 2004
Posts: 134
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.
Manfred Klug
Ranch Hand

Joined: Jun 04, 2007
Posts: 377
Hi jibs,

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 ]
Srinivasan thoyyeti
Ranch Hand

Joined: Feb 15, 2007
Posts: 557
Manfred Klug ,

Do you think wait,notify can be called out-side synchronized context ???
Manfred Klug
Ranch Hand

Joined: Jun 04, 2007
Posts: 377
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.
Srinivasan thoyyeti
Ranch Hand

Joined: Feb 15, 2007
Posts: 557
I am sorry for that
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Thread wait()