Object.wait(long timeout) has the following syntax.
public final void wait(long timeout) throws InterruptedException
In the following code shows how to use Object.wait(long timeout) method.
class MyResource { boolean ready = false; /* w ww. j ava 2 s .co m*/ synchronized void waitFor() throws Exception { System.out.println(Thread.currentThread().getName() + " is entering waitFor()."); while (!ready) wait(10000); 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.