Java Data Type Tutorial - Java Object.wait(long timeout, int nanos)








Syntax

Object.wait(long timeout, int nanos) has the following syntax.

public final void wait(long timeout, int nanos)  throws InterruptedException

Example

In the following code shows how to use Object.wait(long timeout, int nanos) method.

class MyResource {
  boolean ready = false;
/*ww  w .  j  av  a2  s.  c  om*/
  synchronized void waitFor() throws Exception {
    System.out.println(Thread.currentThread().getName()
        + " is entering waitFor().");
    while (!ready)
      wait(10000, 500);

    System.out.println(Thread.currentThread().getName()
        + " resuming execution.");
  }

  synchronized void start() {
    ready = true;
    notify();
  }
}

class MyThread implements Runnable {
  MyResource myResource;

  MyThread(String name, MyResource so) {
    myResource = so;
    new Thread(this, name).start();
  }

  public void run() {

    try {
      myResource.waitFor();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

public class Main {
  public static void main(String args[]) throws Exception {
    MyResource sObj = new MyResource();
    new MyThread("MyThread", sObj);
    for (int i = 0; i < 10; i++) {
      Thread.sleep(50);
      System.out.print(".");
    }
    sObj.start();
  }
}

The code above generates the following result.