//模擬生產者消費者,生產者(Producter類)生產窩頭(WoTou類),放入一個大筐(stack類),消費者(Consumer類)從大筐中取出窩頭並打印窩頭的id
public class producconsumertest {
/**
* @param args
*/
public static void main(String[] args) {
Stack ss = new Stack();
Producter p = new Producter(ss);
Consumer c = new Consumer(ss);
new Thread(p).start();
new Thread(c).start();
}
}
//窩頭類
class WoTou{
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public WoTou(int id){
this.id=id;
}
}
//大筐類
class Stack{
private int index=0;
private WoTou[] arr = new WoTou[6];
public synchronized void push(WoTou wt){
while(index == arr.length){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
this.notify();
arr[index] = wt;
index++;
}
public synchronized WoTou pop(){
while(index ==0){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
this.notify();
index--;
return arr[index];
}
}
//生產者類
class Producter implements Runnable{
private Stack ss =null;
public Producter(Stack ss){
this.ss = ss;
}
@Override
public void run() {
for(int i =0;i<20;i++){
WoTou wt = new WoTou(i);
ss.push(wt);
System.out.println("生產了:"+i);
}
}
}
//消費者類
class Consumer implements Runnable{
private Stack ss =null;
public Consumer(Stack ss){
this.ss = ss;
}
@Override
public void run() {
for(int i =0;i<20;i++){
WoTou wt =ss.pop();
System.out.println("消費了:"+wt.getId());
}
}
}
生產者消費者模擬程序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.