小工具知识网

当前位置: 首页 > 行业知识 > Day17学习Java

行业知识

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 

上一篇:高仿苹果设备调试模式破解指南,风险警示与操作揭秘

下一篇:揭秘掌上餐厅源码,高效餐饮管理系统的打造之道!