1、线程间通信的两个方法:
<1>、wait()
<2>、notify()/notifyAll()
2、案例实现:
public class waitAndNotify_demo02 {
public static void main(String[] args) {
//创建锁对象保证唯一同步性
Object object = new Object();
//创建顾客1线程
new Thread(){
@Override
public void run() {
//加锁,保证唯一性
synchronized (object){
//告诉老板自己吃什么面
System.out.println("顾客1我吃什么类型的面");
//wait()进入等待状态
try {
object.wait(); //和sleep类型,睡醒就直接走下一步了。
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("顾客1吃好了");
}
}
}.start(); //启动线程
//创建顾客2线程
new Thread(){
@Override
public void run() {
//加锁,保证唯一性
synchronized (object){
//告诉老板自己吃什么面
System.out.println("顾客2我吃什么类型的面");
//wait()进入等待状态
try {
object.wait(); //和sleep类型,睡醒就直接走下一步了。
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("顾客2吃好了");
}
}
}.start(); //启动线程
//又忘记了启动老板线程
//创建老板线程
new Thread(){
@Override
public void run() {
//花了多久做面
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (object){
System.out.println("面做好了");
//通知吃面
//object.notify(); //任意通知一个;
object.notifyAll();
}
}
}.start();
}
}