Java Object Wait
# Java Object wait() Method
[Java Object class](#)
* * *
The Object wait() method causes the current thread to enter a waiting state until another thread invokes the [notify() method](#) or the [notifyAll() method](#) for this object.
The current thread must be the owner of this object's monitor; otherwise, an IllegalMonitorStateException will be thrown.
If the current thread is interrupted by any thread before or while it is waiting, an InterruptedException will be thrown.
### Syntax
public final void wait()
### Parameters
* **None**.
### Return Value
No return value.
### Example
The following example demonstrates the use of the wait() method:
## Example
import java.util.Collections; import java.util.LinkedList; import java.util.List; public class TutorialTest extends Object{private List synchedList; public TutorialTest(){// Create a synchronized list synchedList = Collections.synchronizedList(new LinkedList()); }// Remove an element from the list public String removeElement()throws InterruptedException{synchronized(synchedList){// Wait while the list is empty while(synchedList.isEmpty()){System.out.println("List is empty..."); synchedList.wait(); System.out.println("Waiting..."); }String element = (String)synchedList.remove(0); return element; }}// Add an element to the list public void addElement(String element){System.out.println("Opening..."); synchronized(synchedList){// Add an element and notify that it exists synchedList.add(element); System.out.println("New Element:'" + element + "'"); synchedList.notifyAll(); System.out.println("notifyAll called!"); }System.out.println("Closing..."); }public static void main(String[]args){final TutorialTest demo = new TutorialTest(); Runnable runA = new Runnable(){public void run(){try{String item = demo.removeElement(); System.out.println("" + item); }catch(InterruptedException ix){System.out.println("Interrupted Exception!"); }catch(Exception x){System.out.println("Exception thrown."); }}}; Runnable runB = new Runnable(){// Perform add element operation and start loop public void run(){demo.addElement("Hello!"); }}; try{Thread threadA1 = new Thread(runA, "Google"); threadA1.start(); Thread.sleep(500); Thread threadA2 = new Thread(runA, ""); threadA2.start(); Thread.sleep(500); Thread threadB = new Thread(runB, "Taobao"); threadB.start(); Thread.sleep(1000); threadA1.interrupt(); threadA2.interrupt(); }catch(InterruptedException x){}}}
The output of the above program is:
List is empty...List is empty...Opening...New Element:'Hello!' notifyAll called!Closing...Waiting...Waiting...List is empty...Hello!Interrupted Exception!
* * Java Object class](#)
YouTip