public class Food {
private int flag;
public void produce(){
synchronized (this) {
while(flag==0){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("生产");
this.notifyAll();
flag=0;
}
}
public void coustem(){
synchronized (this) {
while(flag==1){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("消费");
this.notifyAll();
flag=1;
}
}
}
public class Produce extends Thread{
private Food food;
public Food getFood() {
return food;
}
public void setFood(Food food) {
this.food = food;
}
public void run(){
while(true){
food.produce();
}
}
}
package com.test;
public class Coustem extends Thread {
private Food food;
public Food getFood() {
return food;
}
public void setFood(Food food) {
this.food = food;
}
public void run(){
while(true){
food.coustem();
}
}
}
package com.test;
public class Test {
public static void main(String[] args) {
Food f= new Food();
Coustem c= new Coustem();
c.setFood(f);
Produce p = new Produce();
p.setFood(f);
c.start();
p.start();
}
}