IntelliJ Java IDE
The moose likes Threads and Synchronization and the fly likes Wait() doubt Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login
JavaRanch » Java Forums » Java » Threads and Synchronization
Reply Bookmark "Wait() doubt" Watch "Wait() doubt" New topic
Author

Wait() doubt

John Lincoln
Ranch Hand

Joined: Feb 11, 2003
Posts: 192
Hi,
Is this legal and "right" way of using wait()?
try{
while (true){
System.out.println(" I am in wait loop :");
wait();
}
}catch(InterruptedException ie){//some function}
Or should i use wait only with notify?
If i just want to "wait" until i get interrupted , i should only as below ?
try{
Thread.sleep();
}catch (InterruptedException e){}
please help
Thanks for your time.
Praveen.
Peter den Haan
author
Ranch Hand

Joined: Apr 20, 2000
Posts: 3252
If you really want to wait for an interrupt and never are going to notify the thread, I think you'd best use sleep(long) instead (with a very long sleep time). The reason for suggesting this is simply that anyone reading your code, upon seeing wait(), will automatically assume there is a notify() somewhere.
However, I'd want to query whether interrupt() is really the way to do whatever it is you want to do. Is there any reason why you can't use notify() instead of interrupt()?
- Peter
[ February 25, 2003: Message edited by: Peter den Haan ]
Jim Yingst
Wanderer
Sheriff

Joined: Jan 30, 2000
Posts: 18652
The reason for suggesting this is simply that anyone reading your code, upon seeing wait(), will automatically assume there is a notify() somewhere.
That, and also using a wait() requires you to first acquire a lock on the monitor instance whose wait() is invoked. In the code example shown, this can be achieved by making the enclosing method synchronized, or by using a smaller synchronized block (synchronized (this)). If your design doesn't otherwise have a need to acquire a lock, why add one now? Just use sleep() as Peter says. Or, use wait()/notify() instead of sleep()/interrupt() (again as Peter says). Which one to use depends on your requirements. But wait() almost always goes with notify()/notifyAll(), while sleep() may work well with interrupt(). Mixing them up is not very common.


"I'm not back." - Bill Harding, Twister
 
 
subject: Wait() doubt
 
Threads others viewed
thread
please critique the code
Regarding synchronization
InterruptedException
Applied Reasoning - wait method
IntelliJ Java IDE