Wait And Notify in Java Example

Chapter: Thread Last Updated: 21-07-2016 10:49:35 UTC

Program:

            /* ............... START ............... */
                
class MyThread extends Thread {

	Object lock;

	MyThread(Object lock) {
		this.lock = lock;
	}

	public void run() {
		System.out.println(this.getName() + ": Started");

		System.out.println(this.getName() + ": Starting for loop");
		for (int i = 0; i < 1000000000; i++) {
		}
		System.out.println(this.getName() + ": Finished for loop.");

		System.out.println(this.getName() + ": About to notify all");
		synchronized (lock) {
			lock.notifyAll();
		}
		System.out.println(this.getName() + ": Finished");
	}
}

public class JavaWaitNotifyExample {
	public static void main(String[] args) {

		System.out.println("Main program: Started");
		Object lock = new Object();
		MyThread t1 = new MyThread(lock);
		System.out.println("Main program: Spawing thread");
		t1.start();
		System.out.println("Main program: Waiting for lock");
		synchronized (lock) {
			try {
				lock.wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		System.out.println("Main program: Resuming.");
		System.out.println("Main program: Finished.");
	}
}
                /* ............... END ............... */
        

Output

Main program: Started
Main program: Spawing thread
Main program: Waiting for lock
Thread-0: Started
Thread-0: Starting for loop
Thread-0: Finished for loop.
Thread-0: About to notify all
Main program: Resuming.
Thread-0: Finished
Main program: Finished.

Notes:

  • wait( ) tells the calling thread to give up the monitor and go to sleep until some other thread enters the same monitor and calls notify( ).
  • notify( ) wakes up the first thread that called wait( ) on the same object.
  • notifyAll( ) wakes up all the threads that called wait( ) on the same object. The highest priority thread will run first.

Tags

Wait And Notify, Thread, Java

Similar Programs Chapter Last Updated
Java Synchronized Method Thread 10-10-2017
Java Thread SetName() Method Thread 19-08-2017
Java Thread NotifyAll Method Thread 07-08-2017
Java Thread Synchronization Thread 07-01-2017
Java Display All Running Thread Thread 10-09-2016
Java Get Thread ID Example Thread 10-09-2016
Java Thread Suspend Example Thread 10-09-2016
Java Thread Stop Example Thread 10-09-2016
Java Set Thread Priority Thread 10-09-2016
Java Thread Status Example Thread 10-09-2016
Wait On object In Java Thread 13-08-2016
Demonstrate Join() In Java Thread Thread 13-08-2016
Wait For Threads To Finish In Java Thread 13-08-2016
Wait For Completion Of Thread In Java Thread 13-08-2016
Thread Yield In Java Example Thread 20-06-2016
Suspend Resume And Stop A Thread In Java Thread 21-07-2016
Interthread Communication In Java Example Thread 19-08-2017
Thread start() Method in Java Example Thread 21-07-2016
Thread run() Method in Java Thread 19-08-2017
Thread isAlive() Method in Java Example Thread 19-08-2017
Thread getPriority() Method In Java Example Thread 11-04-2016
Thread getName() Method In Java Example Thread 21-07-2016
Synchronized Method In Java Example Thread 25-06-2017
Pause Execution with Sleep In Java Example Thread 21-07-2016
Thread Stack Trace In Java Example Thread 21-07-2016
Thread Volatile Variable In Java Example Thread 16-06-2017
Thread State In Java Example Thread 16-06-2017
Thread Sleep In Java Example Thread 15-07-2016
Thread Name In Java Example Thread 13-06-2017
Thread Join In Java Example Thread 13-06-2017

1 2