




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河 北 建 筑 工 程 学 院实 验 报 告 2013年 11 月 26 日班级物联网111姓名李望来学号37评分实验台号同组人员实验名称进程同步课程名称操作系统仪 器 名 称型号规格仪器编号JavaJdk1.6Eclipseeclipse-SDK-4.2.2一 实验目的1 深刻理解进程同步的概念。2 掌握经典同步问题,生产者消费者问题。二 实验设备PC机三 实验内容 在java开发环境下模拟经典进程同步问题,生产者消费者问题。1. 设计方案:1、用Java编写程序,运行环境为Eclipse。2、抽象化生产者与消费者之间的关系,即用进程来产生数据或者使用数据,定义的类有:(1)public class PCTable2 (2)class Producer (3)class Consumer3、然后通过接口ActionListener来实现多个生产者与多个消费者之间的关系: (1)、class Producer implements ActionListener (2)、class Consumer implements ActionListener4、还需要有一个缓冲区来存放数据,即通过缓冲区把生产者和消费者联系起来。 2. 流程图: 创建“生产者”进程缓冲区是否阻塞“生产者”等待“消费者”取出缓冲区的数据创建“消费者”进程“消费者”阻塞缓冲区是否为空输入数据“生产者”生产产品后被唤醒NONOYES四 程序的主要代码package ch2;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PCTable2 static JButton jbtn=new JButton(生产者1),new JButton(生产者2),new JButton(生产者3),new JButton(生产者4), new JButton(消费者1),new JButton(消费者2),new JButton(消费者3),new JButton(消费者4);static JPanel jpan1 = new JPanel();static JPanel jpan2 = new JPanel();static JPanel jpan3 = new JPanel();static JTextField jtf1 = new JTextField();static JTextField jtf2 = new JTextField();static JTextField jtf3 = new JTextField();static JTextField jtf4 = new JTextField();static JTextField jtf5 = new JTextField();static JTextField jtf6 = new JTextField();static JTextField jtf7 = new JTextField();public static void main(String args) JFrame jfrm = new JFrame(生产者-消费者问题);jfrm.setBounds(300, 100,900,400);jfrm.setLayout(null);jpan1.setLayout(null);jpan2.setLayout(null);jpan3.setLayout(null);jtf1.setBounds(100,10,100,30);jtf2.setBounds(300,10,100,30);jtf3.setBounds(50,10,100,30);jtf4.setBounds(250,10,100,30);jtf5.setBounds(100,10,100,30);jtf6.setBounds(200,10,100,30);jtf7.setBounds(300,10,100,30);jpan1.setBounds(0,60,450,50);jpan2.setBounds(450,60,450,50); jpan3.setBounds(200,260,500,50);JLabel jlab1= new JLabel(消费者队列,JLabel.CENTER);jlab1.setBounds(600,30,100,30);jlab1.setOpaque(true);jlab1.setBackground(Color.yellow);JLabel jlab2= new JLabel(生产者队列,JLabel.CENTER);jlab2.setBounds(200,30,100,30);jlab2.setOpaque(true);jlab2.setBackground(Color.yellow);JLabel jlab3 = new JLabel(缓冲区,JLabel.CENTER);jlab3.setBounds(400,220,100,30);jlab3.setOpaque(true);jlab3.setBackground(Color.yellow);jbtn0.setBounds(100,120,100,30);jbtn1.setBounds(300,120,100,30);jbtn2.setBounds(500,120,100,30);jbtn3.setBounds(700,120,100,30);jbtn4.setBounds(100,180,100,30);jbtn5.setBounds(300,180,100,30);jbtn6.setBounds(500,180,100,30);jbtn7.setBounds(700,180,100,30);jbtn0.addActionListener(new Producter();jbtn1.addActionListener(new Producter();jbtn2.addActionListener(new Producter();jbtn3.addActionListener(new Producter();jbtn4.addActionListener(new Consumer();jbtn5.addActionListener(new Consumer();jbtn6.addActionListener(new Consumer();jbtn7.addActionListener(new Consumer();jpan1.add(jtf1);jpan1.add(jtf2);jpan2.add(jtf3);jpan2.add(jtf4);jpan3.add(jtf5);jpan3.add(jtf6);jpan3.add(jtf7);jfrm.add(jlab1);jfrm.add(jlab2);jfrm.add(jlab3);jfrm.add(jbtn0);jfrm.add(jbtn1);jfrm.add(jbtn2);jfrm.add(jbtn3);jfrm.add(jbtn4);jfrm.add(jbtn5);jfrm.add(jbtn6);jfrm.add(jbtn7);jfrm.add(jpan1);jfrm.add(jpan2);jfrm.add(jpan3);jtf1.setForeground(Color.BLUE);jtf2.setForeground(Color.BLUE);jtf3.setForeground(Color.BLUE);jtf4.setForeground(Color.BLUE);jtf5.setForeground(Color.BLUE);jtf6.setForeground(Color.BLUE);jtf7.setForeground(Color.BLUE);Font f=new Font(楷体,Font.BOLD,20);jtf1.setFont(f); jtf2.setFont(f); jtf3.setFont(f); jtf4.setFont(f); jtf5.setFont(f); jtf6.setFont(f); jtf7.setFont(f);jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jfrm.setVisible(true); static class Producter implements ActionListener JButton bun0=jbtn0;JButton bun1=jbtn1;JButton bun2=jbtn2;JButton bun3=jbtn3;JButton bun4=jbtn4;JButton bun5=jbtn5;JButton bun6=jbtn6;JButton bun7=jbtn7; public void actionPerformed(ActionEvent e) JButton jbtn=(JButton)e.getSource();String str=jbtn.getText();if (jtf3.getText().equals()if (jtf5.getText().equals()jtf5.setText(str);elseif(jtf5.getText().equals(生产者1)|jtf5.getText().equals(生产者2)|jtf5.getText().equals(生产者3)|jtf5.getText().equals(生产者4)if(jtf6.getText().equals()jtf6.setText(str);elseif(jtf6.getText().equals(生产者1)|jtf6.getText().equals(生产者2)|jtf6.getText().equals(生产者3)|jtf6.getText().equals(生产者4) if(jtf7.getText().equals()jtf7.setText(str); elseif(jtf1.getText().equals()jtf1.setText(str);jbtn.setEnabled(false);elseif(jtf2.getText().equals() jtf2.setText(str);bun0.setEnabled(false);bun1.setEnabled(false);bun2.setEnabled(false);bun3.setEnabled(false); elsejtf3.setText(jtf4.getText();jtf4.setText();if(jtf4.getText().equals()if(jtf3.getText().equals(bun4.getText()bun4.setEnabled(false);else bun4.setEnabled(true);if(jtf3.getText().equals(bun5.getText()bun5.setEnabled(false);else bun5.setEnabled(true);if(jtf3.getText().equals(bun6.getText()bun6.setEnabled(false);else bun6.setEnabled(true);if(jtf3.getText().equals(bun7.getText()bun7.setEnabled(false);else bun7.setEnabled(true);elsebun4.setEnabled(false);bun5.setEnabled(false);bun6.setEnabled(false);bun7.setEnabled(false); static class Consumer implements ActionListener JButton bun0=jbtn0;JButton bun1=jbtn1;JButton bun2=jbtn2;JButton bun3=jbtn3;JButton bun4=jbtn4;JButton bun5=jbtn5;JButton bun6=jbtn6;JButton bun7=jbtn7; public void actionPerformed(ActionEvent e) JButton jbtn=(JButton)e.getSource();String str=jbtn.getText();if (jtf5.getText().equals()if(jtf3.getText().equals()jtf3.setText(str);jbtn.setEnabled(false);elseif(jtf4.getText().equals();jtf4.setText(str);bun4.setEnabled(false);bun4.setEnabled(false);bun5.setEnabled(false);bun6.setEnabled(false);bun7.setEnabled(false);elsejtf5.setText(jtf6.getText();jtf6.setText(jtf7.getText();jtf7.setText(jtf1.getText();jtf1.setText(jtf2.getText();jtf2.setText();if(jtf1.getText().equals()bun0.setEnabled(true);bun1.setEnabled(true);bun2.setEnabled(true);bun3.setEnabled(true); else if(jtf2.getText().equals()if(jtf1.getText().equals(bun0.getText()bun0.setEnabled(false);else b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 皮革缝纫辊工艺考核试卷及答案
- 水产品干燥能耗评估工艺考核试卷及答案
- 景区运营管理师知识考核试卷及答案
- 陶瓷釉面涂层涂层镭射装饰技术考核试卷及答案
- 铁路机车车辆制动钳工前沿技术考核试卷及答案
- 肉品分级员职业考核试卷及答案
- 医疗技术考试题目及答案
- 心室相关电生理手术问题及心动过速诊断试卷
- 2025年XX学校会计学专业大学生生涯发展展示
- 公安学专业试题及答案
- 煤矿安全规程2025版解读
- 尿培养的采集
- 东航空乘英语考试题目及答案
- 2025绿植租赁协议(简易版)
- 《三级工学一体化师资培训》课件-第四课:教学活动策划
- 2025年秋季开学典礼诗歌朗诵稿:纪念抗战胜利八十周年
- 2025年广东省中考英语试卷深度评析及2026年备考策略
- 适老化家装设计
- 第一 单元 富强与创新 单元检测题(含答案)-2025-2026学年 九年级上册道德与法治
- 2025-2026秋中小学升旗仪式演讲稿:(第3周)积跬步养习惯向未来
- 2025秋苏教版(2024)小学科学二年级上册(全册)课时练习及答案(附目录)
评论
0/150
提交评论