刚看了下java编程思想中关于多线程的介绍,其中有一段基于依赖(工作流)的生产者-消费者代码。场景为一个消费者(waitPerson)等待吃饭(Meal),一个生产者(Chef)负责做饭,一个服务员(Restaurant)负责生成和维护消费者和生产者线程。
读过之后,我想改变场景如下,还是有一个生产者,一个服务员,但是多个消费者竞争Meal。
这里通过wait和notifyAll来协作chef和各个waitPerson,wait在这个有两个作用,一个是阻塞某一线程,另一个是释放对某一对象的锁。代码如下:
Meal.java
public class Meal {
private final int orderNum;
public Meal(int orderNum){
this.orderNum=orderNum;
}
public String toString(){
return "Meal"+orderNum;
}
}
public class WaitPerson implements Runnable { private Restaurant restaurant; private int num; private int count; public WaitPerson(Restaurant r, int num) { restaurant