




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品文档河北建筑工程学院实验报告年 月 日班级物 联142姓名孙胜杰学号20143260218评分实验台号同组人员实验名称经典进程同步问题-生产者消 费者问题模拟实现课程名称操作系统仪器名称型号规格仪器编号装后eclipse软件和Java开发环境的PC机一实验目的1深刻理解进程同步的概念。2掌握经典同步问题,生产者一一消费者问题。二实验设备PC机三实验内容在Java开发环境下模拟经典进程同步问题,生产者一一消费者问题。四程序的主要代码package生产者与消费者问题;import java.util.LinkedList;import java.util.Scanner;class Stora
2、ge /仓库最大存储量private final int MAX_SIZE = 100;1欢在下载精品文档new/仓库存储的载体newprivate LinkedList list =LinkedList();/ 生产皿小产品public void produce( int num)/同步代码段synchronized (list) /如果仓库剩余容量不足while (list.size() + num MAX_SIZE) System.out .println(要生产的产品数量:+ num +t库存量:+ list.size() +t暂时不能执行生产任务!);System.out.print
3、ln(进行生产操作(1),还是消费操作(0)?);try/由于条件不满足,生产阻塞2欢在下载精品文档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.notify
4、All();3欢在下载精品文档)/消费nunr产品 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();4欢在下载精品文档)catch (InterruptedExcep
5、tion 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();)5欢在下载精品文档/ get/set 方法public LinkedList getList()( return list;public void setList(Linked
6、List list)(this .list = list;public int getMAX_SIZE()( return MAX_SIZE;/生产者类Producer继承线程类Thread class Producer extends Thread(/每次生产的产品数量6欢立下载精品文档private int num;/所在放置的仓库 private Storage storage;/构造函数,设置仓库public Producer(Storage storage)(this .storage = storage;/线程run函数 public void run()(produce(num)
7、;/调用仓库Storage的生产函数 public void produce( int num) (duce(num);7欢立下载精品文档/ 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;)8欢立下载精品文档消费者类Consume继承线程类Threadc
8、lass Consumer extends Thread(/每次消费的产品数量private int num;/所在放置的仓库private Storage storage;/构造函数,设置仓库public Consumer(Storage storage)(this .storage = storage;/线程run函数public void run()(consume(num);9欢立下载精品文档/调用仓库Storage的生产函数 public void consume(int num)(storage.consume(num);/ get/set 方法public int getNum(
9、)(return num;public void setNum( int num)(this .num = num;public Storage getStorage()(return storage;10欠0迎下载精品文档public void setStorage(Storage storage)(this .storage = storage;) public class ProducerAndConsumer(public static void main(String args)(/仓库对象Storage storage = newStorage();/生产者对象Producer p
10、1 =newProducer(storage);Producer p2 =newProducer(storage);Producer p3 =newProducer(storage);Producer p4 =newProducer(storage);Producer p5 =newProducer(storage);Producer p6 =newProducer(storage);1欺速下载精品文档Producer p7 = newProducer(storage);Producer p8= newProducer(storage);Producer p9 = newProducer(st
11、orage);Producer p10 = new Producer(storage);/消费者对象Consumer c1 = newConsumer(storage);Consumer c2 = newConsumer(storage);Consumer c3 = newConsumer(storage);Consumer c4 = newConsumer(storage);Consumer c5 = newConsumer(storage);Consumer c6 = newConsumer(storage);Consumer c7 = newConsumer(storage);Consu
12、mer c8 = newConsumer(storage);Consumer c9 = newConsumer(storage);Consumer c10 = new Consumer(storage);System.out .println(已生产产品数量:0t已消费产品数量:0t库存量:0t最大存储空间:100”);System.out.println(进行生产操作(1),还是消费操作(0)?);12欠迎下载精品文档Scanner isProduer= newScanner(System. in );for (int i =1;i10;i+)/System.out.println(进行生产
13、操作(1),还是消费操作(0)?); if (isProduer.nextInt()=1)System.out .print(请输入要生产的产品数量:);Scanner p11 = newScanner(System. in );if (i=1)p1.setNum(p11.nextInt();p1.start();else if (i=2)p2.setNum(p11.nextInt();p2.start();else if (i=3)p3.setNum(p11.nextInt();p3.start();else if (i=4)p4.setNum(p11.nextInt();13欠0迎下载精品
14、文档p4.start();)else if (i=5)p5.setNum(p11.nextInt();p5.start();else if (i=6)p6.setNum(p11.nextInt();p6.start();else if (i=7)p7.setNum(p11.nextInt();p7.start();else if (i=8)p8.setNum(p11.nextInt();p8.start();else if (i=9)p9.setNum(p11.nextInt();p9.start();else if (i=10)p10.setNum(p11.nextInt();14欠迎下载精
15、品文档p10.start();) else System.out .print(请输入要消费的产品数量:);Scanner p12= newScanner(System. in );if (i=1)c1.setNum(p12.nextInt();c1.start();else if (i=2)c2.setNum(p12.nextInt();c2.start();else if (i=3)c3.setNum(p12.nextInt();c3.start();else if (i=4)c4.setNum(p12.nextInt();c4.start();i微迎下载精品文档)else if (i=5
16、)c5.setNum(p12.nextInt();c5.start();else if (i=6)c6.setNum(p12.nextInt();c6.start();else if (i=7)c7.setNum(p12.nextInt();c7.start();else if (i=8)c8.setNum(p12.nextInt();c8.start();else if (i=9)c9.setNum(p12.nextInt();c9.start();else if (i=10)c10.setNum(p12.nextInt();c10.start();16攵迎下载精品文档)五、实验结果本程序应
17、用Java软件开发,没有引入界面,需要使用可以运行java的eclipse 等软件运行。程序目录为:生产者与消费者问题 生产者消费者问题代码生产者与消费者问题 下的ProducerAndConsumer.java文件。程序运行后,界面如图所示:当输入1时,显示如下:精品文档快速即可有e Java TOC o 1-5 h z 士 IrS Jmdoc .日控1吉工 qy UflCat. | :二.|A 口与挈 |r*6,E* 同ProducerAndConsumer JavaC:PrOgram FiksJdVdjdk1.8.0 74ifivafw.&K& (20161 已生产产品数量:0已清薪产品
18、耕j:0 度存量充。昂大存健宅就100%进行生产操作以小迂是消费操作孤?同式请福入要生产的产品数量,Q -现在输入要生产的产品数量快递西同珍利Java TOC o 1-5 h z :问题 标jvads 被朋 日校4吉 二 ,曲赞 #LogCit|3 公,- *& v- *3*r*FjProducerAndCcxisumer (Java K=程序C: Program 日足avW. dk8.0 74bin javaw.exe (2C 161 - 己生产产品裁量:口已摘费产品钾量:口库存量I 0量大存储空端100 迸行生产操作tl),还是消费操作悌17理* 清埔人要生产的产品政量;其.己蛭生产产品斜
19、;2。度率存量:20诺行生产操作(1).还是清费操作(Qb?! 中一直重复该操作,直至如图情况:18欠0迎下载精品文档快速电汽|百取Java ,向航号总vadoc艮朝 日控制白金 对讲际 *gg匚京f_占 X,I,口矿万,* 0 * H * 同ProducerAndCcnsumer Java 应用程序CProgram *辰?”村dklEO74Wn串tvaw.exc (20161 * TOC o 1-5 h z 己生产产品数量:U己消费产品裁量:g隹存量:。最大存储空瓦100工透行生产操作门),还是梢费操作f。?e4清箱人要生产的产品数量二11-已经生产产品敌:20现库存量:2。金进行生产悔作门
20、),还是消笃操作01?日1%清输入夔生产的产品数量门um已经生存产品故:m。现库存黄:5。 进行生产操和门),还是消费悭作(0:? 请箱人要生产的产品数量二1g.已经生产产品敌二城 理库存量:打 进行生产操作口人还是酒牌爆作on?I请输A萝生产的产品割黄门.已经生科产品数规库存量;s 遗行生产操作门八还是清寒堤作OB?背漏人不牛广的产品数量二餐町不能仅行生产任务!费生产的产品数量:期库存量:g白餐町不能仅行生产任务!强行生产掾作1狂夏餐费提信(S2此时表示存储空间已满,不能继续进行生产操作F面进行消费操作:19欠0迎下载精品文档快速访问隹 JtiVdL问施Q Javad/声明D在制台支廨 QL
21、cigQt 苜同S 3=1 u同S 3=1 u I百 湎,需S吒i KDProducerAndConsdTier Java 近串程.序t:Progr3m HlesJavajrlkI.8.C /4bin|avaw exe 已生产产品敌量力已消费产品转量:0层存量;0暴大存储土醺MI0港行生产操作tlr还是消费操作力?请输入要生产的产品数量:2己腌生女产品数:20现摩存量:2。进行生产操传-3还是精费提作(。”*输入要生产的产品数量:30已经生品数;式 观摩存量”c逑行生产操作JI) a还是消费墀作(0?清输人要主产的产品数量:1日已经丰五产品数;:白观库存量:。遇行生产操作(“,还是消费操作52清输入蔓生产的产品数量:30已蛭生女产品数二30顼库存量:9E进行生产悔住什),还杲消普操作(3?清输入要生产的产品数量:式要生产的产品敷量:心库存量:钺哲时不能执行生产任务!进行生产瞳作 1”还罡消费操作0)?Q谑输入要酒费的产品教量:21T已经消费产品数二口现库存量为门自彳进行生=操作(1,还是蒋费操作3)?要生产的产品数量7。库存量:暂时不能执行生产任务!迸亍生女操作11,还是消用理作1力?此
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年CPSM考试学习曲线试题及答案
- 体育经纪人与运动员退役后再就业现状与问题研究考核试卷
- 涤纶工业用丝的生产与性能考核试卷
- 防城港职业技术学院《经典影片解读》2023-2024学年第二学期期末试卷
- 2024年采购管理师经典案例试题及答案
- 上饶师范学院《腐蚀与防护》2023-2024学年第二学期期末试卷
- 扬州大学广陵学院《古罗马史》2023-2024学年第二学期期末试卷
- 天津市大港区名校2025届初三物理试题二模冲刺试题(八)含解析
- 漳州科技职业学院《数学分析(荣誉)(Ⅱ)》2023-2024学年第一学期期末试卷
- 高效利用CPSM试题及答案提升成绩
- 陕西省汉中市汉台区部分学校 2024-2025学年七年级下学期第一次月考道德与法治试题(原卷版+解析版)
- DB32T 5003-2025小微型和劳动密集型工业企业现场安全管理规范
- 《积极心理学(第3版)》 课件 第4章 乐观
- GB/T 10000-2023中国成年人人体尺寸
- 2022公务员录用体检操作手册(试行)
- 砂(碎石)垫层施工作业指导书
- 公安局设备采购清单
- 吉春亚神奇的汉字-完整版PPT
- 上海市初三数学竞赛(大同杯)试题
- 反应釜规格尺寸大全(79标、93标)
- 铁路隧道衬砌施工成套技术(图文并茂)
评论
0/150
提交评论