Object类的方法
void notify()
唤醒在此对象监视器上等待的单个线程。
void notifyAll()
唤醒在此对象监视器上等待的所有线程。
void wait()
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
案例
public class DemoWaitAndNotify {
public static void main(String[] args) {
Object obj = new Object();
//消费者线程
new Thread(){
@Override
public void run() {
synchronized (obj){
System.out.println("消费者:老板,一份湿炒牛河。");
try {
Thread.sleep(1000);
obj.wait();
//唤醒后执行
Thread.sleep(1000);
System.out.println("消费者:嗯,好吃。");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
//老板线程
new Thread(){
@Override
public void run() {
synchronized (obj) {
System.out.println("老板:好嘞,您稍等。");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("老板:湿炒牛河,您慢用。");
//唤醒消费者
obj.notify();
}
}
}.start();
}
}
运行结果