编写仓库
public class EventStorage {
private Integer maxSize;
private LinkedList<Date> storage;
public EventStorage(){
maxSize=5;
storage = new LinkedList<>();
}
public synchronized void put(){
while (storage.size() == maxSize){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
storage.add(new Date());
System.out.println("创库里有了"+storage.size()+"产品");
notify();
}
public synchronized void take(){
while (storage.size() ==0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("拿到了:"+storage.poll()+",现在仓库还剩下"+storage.size());
notify();
}
}
生产者
public class Producer implements Runnable {
private EventStorage storage;
public Producer(EventStorage storage) {
this.storage = storage;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
storage.put();
}
}
}
消费者`
public class Consumer implements Runnable{
private EventStorage storage;
public Consumer(EventStorage storage) {
this.storage = storage;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
storage.take();
}
}
}
测试
public class App {
public static void main(String[] args) {
EventStorage eventStorage = new EventStorage();
Producer producer =new Producer(eventStorage);
Consumer consumer = new Consumer(eventStorage);
Thread thread = new Thread(producer);
Thread thread1 = new Thread(consumer);
thread.start();
thread1.start();
}
}