科学家用餐问题.doc


文档分类:管理/人力资源
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

特别说明:文档预览什么样,下载就是什么样。举报非法文档有奖

1/5
1/5
下载所得到的文件列表
科学家用餐问题.doc
文档介绍
湖南农业大学东方科技学院
学 生 实 验 报 告
姓名: 田攀 年级专业班级 2006级计算机1班 日期 2008 年11月 19 日 成绩
课程名称
操纵系统
实验名称
编程实现进程(线程)同步和互斥(4)
实验类型

综合
【实验目的、要求】
(1)通过编写程序实现进程同步和互斥,使学生掌握有关进程(线程)同步与互斥的原理,以及解决进程(线程)同步和互斥的算法,从而进一步巩固进程(线程)同步和互斥等有关的内容。
(2)了解Windows2000/XP中多线程的并发执行机制,线程间的同步和互斥。
(3)学****使用Windows2000/XP中基本的同步对象,掌握相应的API函数。
(4)掌握进程和线程的概念,进程(线程)的控制原语或系统调用的使用。
(5)掌握多道程序设计的基本理论、方法和技术,培养学生多道程序设计的能力。
(6)经调试后程序能够正常运行。
(7)采用多进程或多线程方式运行,体现了进程(线程)同步和互斥的关系。
(8)程序界面美观。
【实验内容】
在Windows XP操作系统下,使用java编程语言,采用进程(线程)同步和互斥的技术编写程序实现哲学家进餐问题设计一个简单进程(线程)同步和互斥的实际问题。
【实验环境】
多媒体计算机,相关软件
【实验步骤、过程】(含原理图、流程图、关键代码,或实验过程中的记录、数据等)
(1)需求分析:哲学家用餐问题是典型的线程序间通信的问题。五位哲学家坐在餐桌前,他们在思考并在感到饥饿时就吃东西。
每两位哲学家之间只有一根筷子,为了吃东西,一位哲学家必须要用两根筷子。如果每位哲学家拿起右筷子,然后等着拿左筷子,问题就产生了。在这种情况下,就会发生死锁。当哲学家放下筷子时,要通知其他等待拿筷子的哲学家。如下运行结果:
哲学家0在吃饭....
哲学家1在等待拿起第1个筷子
哲学家2在吃饭....
哲学家3在等待拿起第3个筷子
哲学家4在等待拿起第0个筷子
哲学家4在吃饭....
哲学家1在等待拿起第2个筷子
哲学家0在思考....
哲学家1在吃饭....
哲学家3在等待拿起第4个筷子
哲学家2在思考....

用餐
科学家0
科学家1
科学家2
科学家3
科学家4
分配
筷子
等待
思考
得到的筷子为2
得到的筷子为0
筷子为1
用完餐的科学家进入思考
归还筷子
得到筷子
得到筷子
(2)概要设计:为筷子单独创建一个类,它有一个标记变量available来指明是否可用。由于任何时候只有一位哲学家能拿起一根特定的筷子,takeup()方法将被同步。还有一个方法putdown()方法,哲学家进餐完毕后,放下他的筷子。当一位哲学家思考时,他通过think()方法放下他的两根筷子,使其他哲学家可以用餐。
(3)详细设计:
public static void main(String args[])
{
for(int n=0;n<5;n++)
{
cp[n]=new ChopStick(n);
}
内容来自淘豆网www.taodocs.com转载请标明出处.