package com.product;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
*仓库
*/
class Storage {
// 仓库容量为10
// private Product[] products = new Product[10];
private int top = 0;
List<Product> arr=new ArrayList<Product>();
// 生产者往仓库中放入产品
public synchronized void push(Product product) {
// while (top == products.length) {
while(top==10){
try {
wait();//仓库已满,等待
//System.out.println("仓库已满,等待 !");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//把产品放入仓库
//products[top++] = product;
top++;
arr.add(product);
System.out.println(Thread.currentThread().getName() + " 生产了产品"
+ product);
notifyAll();//唤醒等待线程
}
// 消费者从仓库中取出产品
public synchronized Product pop() {
while (top == 0) {
try {
wait();//仓库空,等待
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//从仓库中取产品
--top;
// Product p = new Product(products[top].getId(), products[top].getName());
// products[top] = null;
//根据arr的大小获取随机数
int rand=new Random().nextInt(arr.size());
Product p=new Product(arr.get(rand).getId(),arr.get(rand).getName());
arr.remove(rand);
System.out.println(Thread.currentThread().getName() + " 消费了产品" + p);
notifyAll();//唤醒等待线程
return p;
}
}
java实现生产者消费者商品问题
需积分: 13 95 浏览量
2015-08-12
17:49:51
上传
评论
收藏 10KB RAR 举报
leizhouzeng
- 粉丝: 4
- 资源: 7
最新资源
- apk.tw_LineLite_v8a_v.2.17.1_sign.apk
- Elasticsearch实战:构建高效搜索系统的秘诀.zip
- HTML+CSS+JS网页设计:从入门到精通.zip
- 数据库课程设计:从理论到实践的全面指南.zip
- Python闭包:深入理解与应用场景解析.zip
- Win64OpenSSL-3-3-0.exe
- 课高分程设计-基于C++实现的民航飞行与地图简易管理系统-南京航空航天大学
- 航天器遥测数据故障检测系统python源码+文档说明+数据库(课程设计)
- 北京航空航天大学操作系统课设+ppt+实验报告
- 基于Vue+Echarts实现风力发电机中传感器的数据展示监控可视化系统+源代码+文档说明(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈