Food食物,生产一个消费一个。
消费了再生产,生产了继续消费。
public class Food {
String name;//菜名
int price;//菜品价格
boolean hasfood;//默认就是false
public Food()
}
public Food(String name, int price) {
super();
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "Food [name=" + name + ", price=" + price + "]";
}
}
消费者线程
public class Customer implements Runnable{
Food food;
public Customer(Food food) {
this.food = food;
}
public void run(){
while(true){
synchronized (food){
// 需要等待厨师把食物做好。
if(!food.hasfood){
try{
food.wait();
}catch(InterruptedException e){
e.printStackTrace();
}
}
food.hasfood=false;//消费之后,继续等待厨师做菜。
System.out.println(food);
food.notify;//唤醒厨师,叫他做菜。
}
}
}
}
生产者线程
public class Cook{
Food food;
int count;//计数器
public Cook(Food food){
this.food=food;
}
public void run(){
while(true){
synchronized (food){
if(food.hasfood){
try{
food.wait();
}catch(InterruptedException e){
e.printStackTrace();
}
}
if(count%2==0){//偶数做红烧土豆,奇数做番茄炒蛋。
food.name="红烧土豆";
food.price =18;
}
else{
food.name="西红柿炒蛋";
food.price=11;
}
}
count++;
food.hasfood=true;//菜做好了,顾客吃了才做下一份菜。
food.notify();//唤醒顾客,叫他吃饭了。
}
}
}