public class ProConDemo {
public static void main(String[] args) {
Store s = new Store(5, 0);
Pro producer1 = new Pro(s);
Pro producer2 = new Pro(s);
Con consumer1 = new Con(s);
Con consumer2 = new Con(s);
producer1.start();
producer2.start();
consumer1.start();
consumer2.start();
}
}
class Store {
private final int MAX_SIZE;
private int count;
public Store(int size, int c) {
MAX_SIZE = size;
count = c;
}
synchronized public void add() {
if (count >= MAX_SIZE) {
System.out.println("仓库满了");
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
count++;
System.out.println("put " + count);
notifyAll();
}
synchronized public void get() {
if (count <= 0) {
System.out.println("仓库空了");
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("get " + count);
count--;
notifyAll();
}
}
class Pro extends Thread {
private Store s;
public Pro(Store s) {
this.s = s;
}
public void run() {
while (true) {
s.add();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class Con extends Thread {
private Store s;
public Con(Store s) {
this.s = s;
}
public void run() {
while (true) {
s.get();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
简易生产者消费者
最新推荐文章于 2024-04-21 21:55:21 发布