public class ProduserandConsucer {
public static void main(String[] args) {
Stack sk = new Stack();
Producer p = new Producer(sk);
Cunsumer c = new Cunsumer(sk);
new Thread(p).start();
new Thread(c).start();
}
}
class WoTou{
int id;
WoTou(int id){
this.id = id;
}
public String toString(){
return "WoTou="+id;
}
}
class Stack{
int index = 0;
WoTou[] arrWT = new WoTou[6];
public synchronized void Push(WoTou wt){
while(index ==arrWT.length){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notify();
arrWT[index] = wt;
index ++;
}
public synchronized WoTou tack(){
while(index==0){
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notify();
index --;
return arrWT[index];
}
}
class Producer implements Runnable{
Stack sk = null;
Producer(Stack sk){
this.sk = sk;
}
@Override
public void run() {
for (int i = 0; i < 20; i++) {
WoTou wt = new WoTou(i);
sk.Push(wt);
System.out.println("生产了="+wt);
try {
Thread.sleep((int)(Math.random()*2));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Cunsumer implements Runnable{
Stack sk = null;
public Cunsumer(Stack sk){
this.sk = sk;
}
@Override
public void run() {
for (int i = 0; i < 20; i++) {
WoTou wt = sk.tack();
System.out.println("消费了="+wt);
try {
Thread.sleep((int)(Math.random()*1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
生产者跟消费者(馒头)
最新推荐文章于 2022-03-23 10:19:01 发布