- 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
您可能关注的文档
最近下载
- 2021年-2022年gmp车间设计规范.pdf VIP
- 八篇对照学习贯彻党的创新理论、加强党性锤炼、联系服务群众、发挥先锋模范作用、改作风树新风五个方面2025年度组织生活会个人对照检查.docx VIP
- 第六节污闪事故及预防.ppt VIP
- 交叉口的visim仿真与优化毕业论文.docx VIP
- 15J403-1---楼梯栏杆栏板(一).docx VIP
- 临床科室质控活动记录册.pdf VIP
- 水工监测工水工监测工(高级)试卷(水工监测工).doc VIP
- 深度解析(2026)《JRT 0140-2017中小银行信息系统托管维护服务规范》——构筑金融科技安全基石的专家视角与未来实践路径.pptx VIP
- 防晒系数测试分析系统SPF-290ASTM.pdf VIP
- 党支部2025年度组织生活会班子对照检查材料.docx VIP
原创力文档

文档评论(0)