中南大学操作系统实验报告
实验内容Java多线程模拟生产者消费者问题实验时间2014年5月
指导老师胡小龙老师
姓名代巍
班级信安1201班
学号
f一、实验目的
对操作系统的整体进行一个模拟通过实践加深对各个部分的管理功能的认识还能进一步分析各个部分之间的联系最后达到对完整系统的理解。可以提高运用操作系统知识解决实际问题的能力锻炼实际的编程能力要达到以下要求。
1掌握进程线程的同步与互斥。
2掌握生产者消费者问题的实现方法。
3掌握多线程编程方法。
二、实验内容
实现生产者消费者问题。
1假设循环缓冲队列共有多个缓冲单元。
2生产者线程的工作生产出一个产品即产生一个产品编号按顺序往缓冲队列中“空”的缓冲单元放产品。
3消费者线程与的工作从缓冲队列装有产品的缓冲单元中取出一个产品即产品编号。
4保证两个线程间的互斥和同步
5在界面上打印缓冲队列的变化情况
三、实验原理
1生产者消费者问题是一种同步问题的抽象描述。
f2计算机系统中的每个进程都可以消费或生产某类资源。当系统中某一
进程使用某一资源时可以看作是消耗且该进程称为消费者。
3而当某个进程释放资源时则它就相当一个生产者。
模式还需要有一个缓冲区处于生产者和消费者之间作为一个中介。生产者
把数据放入缓冲区而消费者从缓冲区取出数据。大概的结构如下图。
四、实验思想概述
在操作系统中线程有时被称为轻量级进程是CPU使用的基本单位它与属于同一进程的其他进程共享其他代码段、数据段和其他操作系统资源。在Java中线程的建立有两种方法继承Thread类和实现Ru
able接口。其中采用实现Ru
able接口建立线程的好处是允许同时继承其他类从而实现多继承并且在Java中可采用sy
chro
ized或Object类的方法
wait
otify
otifyAll来实现多线程同步。
生产者线程向缓冲区中写数据消费者从缓冲区中读数据这样在这个程序中同时运行的多个线程竞争同一个缓冲区资源。类Producer是生产者模型其中的ru
方法中定义了生产者线程所做的操作循环地将生产的“产品”放入缓冲区中每次生产完后调用sleep方法睡眠一段随机时间以给其他线程执行的机会。类Co
sumer是消费者模型循环地消费“产品”从缓冲区中取出数据每次执行完消费操作后调用sleep方法睡眠一段随机时间以给其他线程执行的机会。
五、数据结构说明
1Producer类声明并创建了Producer类定义了生产者的操作。
f类Producer是生产者模型其中的ru
方法中定义了生产者线程所做的操作循
环地将生产的“产品”放入缓冲r