目录
摘 要 IV
1 问题描述 1
2 需求分析 2
3 概要设计 3
3.1 思路方法 3
3.2 程序流程图 3
4 详细设计 5
4.1 数据结构 5
4.2 生产者/消费者模式与进程通信 5
4.3 生产者进程详细设计 6
4.4 消费者进程详细设计 7
5 调试分析 8
6 用户手册 9
6.1 使用环境 9
6.2 操作要求与流程 9
7 测试结果 10
7.1 序列1的测试 10
7.2 序列4的测试 12
7.3 序列7的测试 13
7.4 其余序列的测试 15
7.5 HTML页面样例 16
8 设计体会 17
参考文献 18
5调试分析
(1)在阻塞队列中,对于统计的数字一直无法正确获得和输出,网络上也没有针对阻塞队列统计这方面的资料和解决方法,最后我通过线程的休眠和take方法的赋值以及对象的回溯来完成在BlockingQueue中对各个对象sum的统计。
(2)在完善全局随机的过程中,由于随机的性质,会导致对象锁的不确定性,一时间无法很快的为该线程正确的加锁和抢占资源,但我最后通过使用synchronized修饰符对生产者的生产方法进行手动加锁,本文转载自http://www.biyezuopin.vip/onews.asp?id=15269并通过循环list的方式完成确定化抢占任务。最后通过随机赋值生产与消费的周期和对个数的随机,完成了全局的随机。
6用户手册
6.1 使用环境
Idea+Anaconda(PyCharm或Jupyter Notebook),可自行选择使用Html
6.2 操作要求与流程
对于Java部分,要求在Idea中导入Jxl第三方Jar包运行。
对于Python部分,要求导入相应包,注意此处的文件路径以设为绝对路径。
同时,如使用py2.py文件绘制散点图时,应将代码中的部分注释部分解除。即在Staging_Area类的consume ()方法和test类中解除对应的注释,代码中有标注。
具体的操作流程如下:
Step1:在Idea中完执行完Java程序,之后在本目录下产生有Excel文件。
Step2: Excel数据经由Python处理执行(此处可以选择PyCharm或Jupyter Notebook),生成对应的图像,可以显示在对应的Html页面中。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>生产者消费者介绍</title>
<link rel="stylesheet" type="text/css" href="first.css" />
</head>
<body >
<div id="container" class="">
<div id="header" class="">
<a href="http://www.aust.edu.cn/"><img src="2.png" height=100% width=47%></a>
</div>
<div id="nav" class="">
<ul>
<li><a href="./First.html">首 页</a></li>
<li><a href="./second.html">成绩评定</a></li>
<li><a href="#">消费者介绍</a></li>
<li><a href="./Forth.html">具体流程</a></li>
<li><a href="./Third.html">测试截图</a></li>
</ul>
</div>
<div id="mainbody" class="">
<div id="main" class="">
<p id="bt">生产者与消费者模拟</p>
<p> 设计一程序,由一个进程创建三个子进程,三个子进程一个是生产者进程,两个是消费者进程<br></p>
<p>
要求1:父子进程都使用父进程创建的共享存储区进行通信,由生产者进程将一个数组中的十个数值发送到由5个缓冲区组成的共享内存中。<br>
<br/>
要求2:两个消费者进程轮流接收并输出这十个数值,同时将两个消费者进程读出的数值进行累加求各和。<br>
<br/>
要求3:考虑生产者进程生产的速度和消费者进程速度。<br>
<br/>
</p>
<br>
</div>
<div id="rightbar" class="">
<div id="rightbar_up">
<p><h3>Author</h3></p>
<p>
胡太长
</p>
</div>
<div id="rightbar_down">
<p><h3>示意图</h3></p>
<a href="URL"><img src="1.png" width=150% ></a>
<br/>
<br/>
<table border="2" cellspacing="" cellpadding="" text-align="center">
<tr text-align="center">
<td width="100">
<a href="https://blog.csdn.net/issunmingzhi/article/details/104520523" target="_blank" ><p style="text-align: center;">博客1</p></a>
</td>
</tr>
<tr>
<td width="100">
<a href="https://www.cnblogs.com/chentingk/p/6497107.html" target="_blank"><p style="text-align: center;">博客2</p></a>
</td>
</tr>
</table>
</div>
</div>
</div>
<br/>
<div id="footer" class="">
<p>©Copyright 呼呼和他的小站 Designed By<a href="http://jsj.aust.edu.cn/" class="footer">安徽理工大学计算机学院</a></p>
</div>
</div>
</body>
</html>