先来先服务问题java程序设计报告(5)

来源:网络收集 时间:2025-04-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

}

pictureProduce.setBounds(x[0], y[0], 120, 120);//再次设置生产图片位置

}

else {

x[0]=20;

b[0]=false;//为空则不能生产 }

//只要消费者图片不为空就可以显示 if(pictureConsume!=null) {

pictureConsume.setBounds(x[1], y[2], 120, 120); }

else {

x[1]=20; b[1]=false; }

//如果缓冲区满了,则不可生产 if(isfull()) {

b[0]=false; }

repaint(); }

定义set_x函数来控制图片横坐标位置: public boolean set_x(int i,int n) {

if(b[i]==true) {

//设置生产者与消费者的横坐标,不断向前 x[i]=n;

//设置生产者生产完成回到起点 if(n>=599&&i==0) {

x[0]=20;//生产者回到起点

Id.push(pictureProduce);//添加到栈中添加一个产品,此时缓冲区并没有产品

image=produce();

pictureProduce=new JLabel(image); add(pictureProduce); }

}

else if(n==20&&i==1||n>=599&&i==1) {

if(n==20&&i==1)//如果是可以消费 {

if(!Id.isEmpty())//当缓冲区不为空时,可以消费 pictureConsume=consume(); else

pictureConsume=null; }

//System.out.println(n); if(x[1]>=599&&i==1) {

pictureConsume.setVisible(true); x[1]=20; } }

return true; }

else return false;

四、 上机调试总结与分析;

调试结果显示:生产者消费者问题的基本功能已经实现,基本没有bug。

五、 用户使用说明;

点击“开始生产”则图片开始运动,表示正在生产,图片运动出生产矩形之

后,表示生产完成,此时缓冲区则显示一个图片。点击“停止生产”则生产进程停止。

点击“开始消费”则缓冲区会少一个产品,表示从缓冲区取走了一个产品消费,同时图片开始在消费矩形之中运动,运动出消费矩形之后停止。点击“停止消费”则消费进程停止。

六、 测试数据与测试结果等内容。 测试结果如下:

初始界面

生产出一个产品之后继续生产

一边生产一边消费

七、 课程设计总结

从这次的课程设计我还是有很多收获的,首先是对于生产者消费者问题有了更深刻的了解,这个问题是典型的多线程问题,在学习java的时候,老师经常讲这个问题,但那时只是知道大概是什么意思。通过这次自己动手模拟这个问题,我才知道生产者消费者问题其实主要考虑缓冲区的问题,缓冲区满则不可生产,缓冲区空则不可消费。

其次,我对于java的线程的使用也熟悉了很多,线程是java的重点和难点,但是我们平时并没有对于线程做很多的练习,所以对于线程可谓是一知半解。通过这次的实验,我使用了多线程的技术,对于的线程的应用方法以及编写方法有了比较深入的了解。以后再遇见线程问题应该可以游刃有余了。

八、附录程序清单

1.DrawPanel类代码

import java.awt.Color; import java.awt.Font; import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener; import java.util.Stack;

import java.util.function.Consumer;

import javax.jws.soap.SOAPBinding.Style; import javax.swing.Icon;

import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel;

import javax.swing.plaf.basic.BasicInternalFrameTitlePane.IconifyAction;

import org.omg.CORBA.IRObjectOperations;

public class DrawPanel extends JPanel implements ActionListener//面板类用于绘图及事件处理 {

private Icon image=null;

private Stack Id=new Stack();//定义一个栈,作为缓冲区

boolean b[]=new boolean[2];//设置两个状态标识,b[0]为true是可以生产,b[1]为true是可以消费

private int max=7;//缓冲区最大值

private mythread threadProduce;//生产者线程 private mythread threadComsume;//消费者线程 private JButton btStartProduce; private JButton btnStartCosume; private JButton btnStopConsume; private JButton btnStopProduce; private JLabel pictureProduce; private JLabel pictureConsume; //private JLabel nameAndId; int x[]=new int[2];

public int get_x(int i)//得到生产、消费横坐标 {

return x[i]; }

public boolean set_x(int i,int n) {

if(b[i]==true) {

//设置生产者与消费者的横坐标,不断向前 x[i]=n;

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库先来先服务问题java程序设计报告(5)在线全文阅读。

先来先服务问题java程序设计报告(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/298436.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219