线程等待唤醒示例
用wait()和 notify()方法
public class WaitNotifyClass {
public static void main(String[] args) {
// 创建锁对象 保证唯一
Object obj = new Object();
//创建一个顾客对象,作为一个线程运行
new Thread() {
@Override
public void run() {
//使用同步技术,避免出现安全问题,
//保证等待和唤醒的线程只有一个进行
synchronized(obj) {
System.out.println("顾客想要的数量");
//调用wait方法等待,放弃cpu的试用期,进入WAITIING状态
try {
obj.wait();
}catch(InterruptedException e) {
e.printStackTrace();
}
//被唤醒之后执行的代码
System.out.println("取得餐,开始吃");
}
}
}.start();
new Thread() {
@Override
public void run() {
//暂停5秒,5秒后通知顾客
try {
Thread.sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
//同样需要使用同步技术,保证只有一个线程执行
synchronized(obj) {
System.out.println("店家已完成,请顾客取餐");
obj.notify();
}
}
}.start();
}
}