生产者和消费者问题中,有这样几个类:1.生产者,顾名思义,是生产东西的。2.消费者,顾名思义,是消费东西的。3.东西,这里用Node表示,即生产一个东西,增加一个节点,消费一个东西,去掉一个节点。4.仓库,这里用Stack表示,生产和消费的Node在栈中。
首先定义Node和Stack。
public class Node {
int id;
public Node(int id){
this.id = id;
}
public String toString(){
return new String("第"+id+"个");
}
}
public class Stack {
int max;//栈的最大值
Node[] stack ;//栈顶元素
int pos;//指向栈顶位置
//创建时是空栈
Stack(int max){
this.max = max;
stack = new Node[max];
pos = -1;
}
//入栈
public synchronized void push(Node node){
//栈满
if(isFull()){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("---栈满了---");
}
this.notify();
pos++;
stack[pos] = node;
}
//出栈
public synchronized Node pop(){
//栈空
if(isEmpty()){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("栈空了");
}
this.notify();
Node node = stack[pos];
pos--;
return node;
}
//判断为空
public boolean isEmpty(){
if(pos == -1){
return true;
}else{
return false;
}
}
//判断栈满
public boolean isFull(){
if(pos == max-1)
return true;
return false;
}
}