基于Java+Python+html的生产者与消费者算法模拟

发布于:2022-12-27 ⋅ 阅读:(227) ⋅ 点赞:(0)

目录
摘 要 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">首&nbsp;&nbsp;&nbsp;&nbsp;页</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>&nbsp;&nbsp;&nbsp;&nbsp;设计一程序,由一个进程创建三个子进程,三个子进程一个是生产者进程,两个是消费者进程<br></p>
                    <p>
                        &nbsp;&nbsp;&nbsp;&nbsp;要求1:父子进程都使用父进程创建的共享存储区进行通信,由生产者进程将一个数组中的十个数值发送到由5个缓冲区组成的共享内存中。<br>
                        <br/>
                        &nbsp;&nbsp;&nbsp;&nbsp;要求2:两个消费者进程轮流接收并输出这十个数值,同时将两个消费者进程读出的数值进行累加求各和。<br>
                        <br/>
                        &nbsp;&nbsp;&nbsp;&nbsp;要求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>&copy;Copyright 呼呼和他的小站  Designed By<a href="http://jsj.aust.edu.cn/" class="footer">安徽理工大学计算机学院</a></p>
			</div>
		</div>
	</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到