Java并发编程系列:Wait和Notify详解

Wait和Notify

这两个方法在Object类中定义,当线程A调用wait方法之后,线程A会停止执行,转为等待阻塞状态,进入等待队列。

这里要注意:
1.调用wait方法前该线程持有调用wait方法对象的锁,同理notify方法一样。这点很重要。

2.只有其他线程调用了notify方法,并且调用了notify方法的对象和上面所说的对象必须是同一个,才可能让A线程继续往下执行。

直接上马:

public class WaitNotify {
	static Object object1= new Object(); 
	static class T1 extends Thread{
		public void run() {
			synchronized (object1) {
				System.out.println("T1 Run!");
				try {
					System.out.println("T1 wait!");
					object1.wait();
					System.out.println("T1 end!");
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}
	static class T2 extends Thread{
	public void run() {
		synchronized (object1) {
			System.out.println("T2 Run!");
			object1.notify();
			try {
				System.out.println("T2 sleep!");
				Thread.sleep(2000);
				System.out.println("T2 end!");
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		}
	}
	public static void main(String ra[]) {
		T1 t1 = new T1();
		T2 t2 = new T2();
		t1.start();
		t2.start();
	}
}

你可能感兴趣的:(并发编程)