生产者消费者报告

上传人:油条 文档编号:114185285 上传时间:2019-11-10 格式:DOC 页数:21 大小:831.50KB
返回 下载 相关 举报
生产者消费者报告_第1页
第1页 / 共21页
生产者消费者报告_第2页
第2页 / 共21页
生产者消费者报告_第3页
第3页 / 共21页
生产者消费者报告_第4页
第4页 / 共21页
生产者消费者报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《生产者消费者报告》由会员分享,可在线阅读,更多相关《生产者消费者报告(21页珍藏版)》请在金锄头文库上搜索。

1、河 北 建 筑 工 程 学 院实 验 报 告 年 月 日班级物联142姓名孙胜杰学号20143260218评分实验台号同组人员实验名称经典进程同步问题-生产者消费者问题模拟实现课程名称操作系统仪 器 名 称型号规格仪器编号装有eclipse软件和Java开发环境的PC机一台一 实验目的1 深刻理解进程同步的概念。2 掌握经典同步问题,生产者消费者问题。二 实验设备PC机三 实验内容 在Java开发环境下模拟经典进程同步问题,生产者消费者问题。四 程序的主要代码package 生产者与消费者问题;import java.util.LinkedList; import java.util.Scan

2、ner;class Storage / 仓库最大存储量 private final int MAX_SIZE = 100; / 仓库存储的载体 private LinkedList list = new LinkedList(); / 生产num个产品 public void produce(int num) / 同步代码段 synchronized (list) / 如果仓库剩余容量不足 while (list.size() + num MAX_SIZE) System.out.println(要生产的产品数量: + num + t库存量: + list.size() +t暂时不能执行生产任

3、务!); System.out.println(进行生产操作(1),还是消费操作(0)?);try / 由于条件不满足,生产阻塞 list.wait(); catch (InterruptedException e) e.printStackTrace(); / 生产条件满足情况下,生产num个产品 for (int i = 1; i = num; +i) list.add(new Object(); System.out.println(已经生产产品数: + num + t现库存量: + list.size(); System.out.println(进行生产操作(1),还是消费操作(0)?

4、);list.notifyAll(); / 消费num个产品 public void consume(int num) / 同步代码段 synchronized (list) / 如果仓库存储量不足 while (list.size() num) System.out.println(要消费的产品数量: + num + t库存量: + list.size() + t暂时不能执行生产任务!); System.out.println(进行生产操作(1),还是消费操作(0)?);try / 由于条件不满足,消费阻塞 list.wait(); catch (InterruptedException e

5、) e.printStackTrace(); / 消费条件满足情况下,消费num个产品 for (int i = 1; i = num; +i) list.remove(); System.out.println(已经消费产品数: + num + t现库存量为: + list.size(); System.out.println(进行生产操作(1),还是消费操作(0)?);list.notifyAll(); / get/set方法 public LinkedList getList() return list; public void setList(LinkedList list) this

6、.list = list; public int getMAX_SIZE() return MAX_SIZE; /生产者类Producer继承线程类Thread class Producer extends Thread / 每次生产的产品数量 private int num; / 所在放置的仓库 private Storage storage; / 构造函数,设置仓库 public Producer(Storage storage) this.storage = storage; / 线程run函数 public void run() produce(num); / 调用仓库Storage的

7、生产函数 public void produce(int num) storage.produce(num); / get/set方法 public int getNum() return num; public void setNum(int num) this.num = num; public Storage getStorage() return storage; public void setStorage(Storage storage) this.storage = storage; /消费者类Consumer继承线程类Thread class Consumer extends

8、Thread / 每次消费的产品数量 private int num; / 所在放置的仓库 private Storage storage; / 构造函数,设置仓库 public Consumer(Storage storage) this.storage = storage; / 线程run函数 public void run() consume(num); / 调用仓库Storage的生产函数 public void consume(int num) storage.consume(num); / get/set方法 public int getNum() return num; publ

9、ic void setNum(int num) this.num = num; public Storage getStorage() return storage; public void setStorage(Storage storage) this.storage = storage; public class ProducerAndConsumer public static void main(String args) / 仓库对象 Storage storage = new Storage(); / 生产者对象 Producer p1 = new Producer(storage

10、); Producer p2 = new Producer(storage); Producer p3 = new Producer(storage); Producer p4 = new Producer(storage); Producer p5 = new Producer(storage); Producer p6 = new Producer(storage); Producer p7 = new Producer(storage);Producer p8= new Producer(storage); Producer p9 = new Producer(storage); Pro

11、ducer p10 = new Producer(storage); / 消费者对象 Consumer c1 = new Consumer(storage); Consumer c2 = new Consumer(storage); Consumer c3 = new Consumer(storage); Consumer c4 = new Consumer(storage); Consumer c5 = new Consumer(storage);Consumer c6 = new Consumer(storage); Consumer c7 = new Consumer(storage); Consumer c8 = new Consumer(storage); Consumer c9 = new Consumer(storage); Consumer c10 = new Consumer(storage);System.out.println(已生产产品数量:0t已消费产品数量:0t库存量:0t最大存储空间:100);System.out.println(进行生产操作(1),还是消费操作(0)?);Scanner isProduer=new Scanner(System.in);for(int i =1;i10;i+

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号