线程间的通信
package Thread;
public class BaoZi {
Boolean flag=false;
}
package Thread;
public class BaoZiPu extends Thread {
private BaoZi baozi;
public BaoZiPu(BaoZi baozi){
this.baozi=baozi;
}
@Override
public void run() {
while(true){
synchronized (baozi){
if(baozi.flag){//若有包子进入等待状态
try {
baozi.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//唤醒之后执行的代码
System.out.println("生产包子");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
baozi.flag=true;
baozi.notify();
System.out.println("包子铺生产完包子,消费者可以吃了");
}
}
}
}
package Thread;
public class ChiHuo extends Thread {
private BaoZi baozi;
public ChiHuo(BaoZi baozi){
this.baozi=baozi;
}
@Override
public void run() {
while(true){
synchronized (baozi){
if(baozi.flag==false){//没有包子进入等待状态
try {
baozi.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("消费者正在吃包子");
baozi.flag=false;
baozi.notify();
System.out.println("--------------------------");
}
}
}
}
package Thread;
public class Demo {
public static void main(String[] args) {
BaoZi baozi=new BaoZi();
new BaoZiPu(baozi).start();
new ChiHuo(baozi).start();
}
}