什么是等待通知机制
等待通知机制在生活中也比比皆是,比如取快递,快递员到来的时间不确定,我们处于wait状态,只有快递员打电话通知我们到门口或者敲门notify,我们才能确定快递到了。
代码示例
package com.yf.waitnotify;
public class MyThread1 extends Thread {
private Object lock;
public MyThread1(Object lock) {
super();
this.lock = lock;
}
@Override
public void run() {
synchronized (lock){
try {
System.out.println("开始 wait time ="+System.currentTimeMillis());
lock.wait();
System.out.println("结束 wait time="+System.currentTimeMillis());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package com.yf.waitnotify;
import org.omg.Messaging.SYNC_WITH_TRANSPORT;
public class MyThread2 extends Thread {
private Object lock;
public MyThread2(Object lock) {
super();
this.lock = lock;
}
@Override
public void run() {
synchronized (lock){
try {
System.out.println("开始notify time ="+System.currentTimeMillis());
lock.notify();
System.out.println("结束notify time ="+System.currentTimeMillis());
} catch (Exception e) {
e.printStackTrace();
}
}
super.run();
}
}
package com.yf.waitnotify;
public class Test {
public static void main(String[] args) {
try {
Object lock=new Object();
MyThread1 thread1=new MyThread1(lock);
Thread t1=new Thread(thread1);
t1.start();
Thread.sleep(3000);
MyThread2 thread2=new MyThread2(lock);
Thread t2=new Thread(thread2);
t2.start();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
运行结果