生产者消费者报告.docVIP

  • 3
  • 0
  • 约6.7千字
  • 约 21页
  • 2019-08-01 发布于浙江
  • 举报
河 北 建 筑 工 程 学 院 实 验 报 告 年 月 日 班级 物联142 姓名 孙胜杰 学号 20143260218 评分 实验台号 同组人员 实验名称 经典进程同步问题---生产者消费者问题模拟实现 课程名称 操作系统 仪 器 名 称 型号规格 仪器编号 装有eclipse软件和Java开发环境的PC机一台 一 实验目的 1 深刻理解进程同步的概念。 2 掌握经典同步问题,生产者——消费者问题。 二 实验设备 PC机 三 实验内容 在Java开发环境下模拟经典进程同步问题,生产者——消费者问题。 四 程序的主要代码 package 生产者与消费者问题; import java.util.LinkedList; import java.util.Scanner; class Storage { // 仓库最大存储量 private final int MAX_SIZE = 100; // 仓库存储的载体 private LinkedListObject list = new LinkedListObject(); // 生产num个产品 public void produce(int num) { // 同步代码段 synchronized (list) { // 如果仓库剩余容量不足 while (list.size() + num MAX_SIZE) { System.out.println(要生产的产品数量: + num + \t库存量: + list.size() +\t暂时不能执行生产任务!); 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)?); 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) { 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 LinkedListObject getList() { r

文档评论(0)

1亿VIP精品文档

相关文档