行业知识
Day17学习Java
2026-10-26 07:08:17
来源:互联网转载
仓储模型
需求:
()生产者线程不断的生产面包放入仓库
消费者线程不断的从仓库中取出面包
()做到先生产的面包先卖出
分析:
生产者线程、消费者线程、面包类、仓库类
先生产的面包先卖出 – 队列模式(LinkedList)
场景:一个生产者,一个消费者
public static void main(String[] args) {Store store = new Store();Producer p = new Producer(store);Consumer c = new Consumer(store);p.start();c.start();} public class Store {这里赋予仓库最大的限度为20private static final int MAX_INIT_CAPACITY = 20;private int curCapacity;//初始容量private int maxCapacity;//最大容量private LinkedList list;public Store() {this(MAX_INIT_CAPACITY);}public Store(int maxCapacity) {this.maxCapacity = maxCapacity;list = new LinkedList();}//入库 - 生产者线程不断的调用public synchronized void push(Cake cake){if(curCapacity >= maxCapacity){try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}curCapacity++;list.add(cake);System.out.println("入库,当前容量为:" + curCapacity);notify();}//出库 - 消费者线程不断的调用public synchronized Cake pop(){if(curCapacity = maxCapacity){try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}curCapacity++;list.add(cake);System.out.println("入库,当前容量为:" + curCapacity);notifyAll();}//出库 - 消费者线程不断的调用public synchronized Cake pop(){while(curCapacity