1 / 9
文档名称:

java生产者消费者问题.doc

格式:doc   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

java生产者消费者问题.doc

上传人:wo1230 2015/12/5 文件大小:0 KB

下载得到文件列表

java生产者消费者问题.doc

相关文档

文档介绍

文档介绍:操作系统课程设计(一号黑体加粗)
用多进程同步方法解决生产者-消费者问题
(小二黑体加粗)

院系:
班级:
学号:
姓名:
同组者:
时间:
目录(小二黑体加粗)
一、题目: 3
二、设计目的: 3
三、总体设计思想概述: 3
四、说明: 3
五、设计要求: 3
六、设计方案: 3
七、流程图: 4
八、运行结果 4
九、源程序 7
十、总结 15
十一、参考文献 15
一、题目:(标题2,即三号黑体加粗)
用多进程同步方法解决生产者-消费者问题。
二、设计目的:
通过研究Linux 的进程机制和信号量实现生产者消费者问题的并发控制。
三、总体设计思想概述:
生产者—消费者问题是一种同步问题的抽象描述。
计算机系统中的每个进程都可以消费或生产某类资源。当系统中某一进程使用某一资源时,可以看作是消耗,且该进程称为消费者。
而当某个进程释放资源时,则它就相当一个生产者。
四、说明:
有界缓冲区内设有20个存储单元,放入/取出的数据项设定为1-20这20个整型数。
五、设计要求:
1、每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者进程的标识符。
2、生产者和消费者各有两个以上。
3、多个生产者或多个消费者之间须有共享对缓冲区进行操作的函数代码。
六、设计方案:
1、用Java编写程序,运行环境为Eclipse。
2、抽象化生产者与消费者之间的关系,即用线程来产生数据或者使用数据,定义的类有:
(1)、public class BufferLock
(2)、class Producer
(3)、class Consumer
3、然后继承Thread(线程)来实现多个生产者与多个消费者之间的关系:
(1)、class Producer extends Thread
(2)、class Consumer extends Thread
4、还需要有一个缓冲区来存放数据,即通过缓冲区把生产者和消费者联系起来。
5、synchronized关键字修饰方法,实现线程同步。
七、流程图:
创建“生产者”线程
缓冲区
是否阻塞
“生产者”等待
“消费者”取出缓冲区的数据
创建“消费者”线程
“消费者”阻塞
缓冲区是否为空
输入数据
“生产者”生产产品后被唤醒
NO
NO
YES
八、运行结果
1、截图一:
2、截图二:
3、截图三:
源程序
public class BufferLock //加互斥锁的缓冲区
{
private int value; //共享变量
private boolean isEmpty=true; //value是否为空的信号量

public synchronized void put(int i) //同步方法
{
while (!isEmpty) //当value不空时,等待
try
{
(); //使调用该方法的当前线程等待,即阻塞自己
}
catch(InterruptedException e) {}

value = i; //当value空时,value