public synchronized void produce()
{
while (pizzaNum >= 10)
{
try
{
wait();
}
catch (Exception e) {}
}
pizzaNum++;
System.out.println("Produce a new pizza, current pizza num: "+pizzaNum);
notifyAll();
try
{
Thread.sleep(1000);
}
catch(Exception e){}
}
public synchronized void consume()
{
while (pizzaNum <= 0)
{
try
{
wait();
}
catch (Exception e) {}
}
pizzaNum--;
notifyAll();
System.out.println("Consume a pizza, current pizza num: "+pizzaNum);
try
{
Thread.sleep(1000);
}
catch(Exception e){}
}
};
class Cooker extends Thread
{
Pizza p;
public Cooker(Pizza p)
{
this.p = p;
this.setPriority(10);
this.start();
}
public void run()
{
while (true)
{
p.produce();
}
}
};
class Consumer extends Thread
{
Pizza p;
public Consumer(Pizza p)
{
this.p = p;
this.start();
}
public void run()
{
while (true)
{
p.consume();
}
}
};
class DemoPizzaStore
{
public static void main(String[] args)
{
Pizza p = new Pizza(0);
Cooker p1 = new Cooker(p);
Cooker p2 = new Cooker(p);
Consumer c1 = new Consumer(p);
Consumer c2 = new Consumer(p);
Consumer c3 = new Consumer(p);
}
}