版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实 验 报 告( 2015/ 2016 学年 第1学期)课程名称JAVA语言程序设计实验名称多线程程序设计实验时间2015年 12 月 1日指导单位软件工程系指导教师 学院(系)专 业学生姓名班级学号实验名称多线程程序设计指导教师杨健实验类型验证实验学时2实验时间2015/12/1一、 实验目的(1) 掌握Java中创建线程对象的方法。(2) 熟悉控制线程状态的过程。(3) 熟悉线程同步机制。(4) 学会用多线程创建多任务的程序设计方法。二、实验环境(实验设备)Eclipse3、 实验内容(1)运行 code1.txt 中的代码,体会通过继承Thread类构造线程的特点。(2)编程完成:要求用
2、实现Runnable接口方式创建三个线程,每个线程的工作是在自己的界面随机的显示26个字母中的一个字母;可通过界面按钮,临时挂起或恢复线程的运行。GUI显示界面参考如下图:GUI参考代码见code2.txt随机显示字母的参考代码见code3.txt实验代码:package 多线程;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;/* * To change this license header, choose License Headers in Project Properties. * To
3、 change this template file, choose Tools | Templates * and open the template in the editor. */import java.awt.event.ActionListener;/* * * author acer */public class NewJFrame extends javax.swing.JFrame /* * Creates new form NewJFrame */ public NewJFrame() initComponents(); /* * This method is called
4、 from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ SuppressWarnings("unchecked") / <editor-fold defaultstate="collapsed" desc="Generated Code"> private
5、void initComponents() jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jTextField3 = new javax.swing.JTextField(); jCheckBox1 = new javax.swing.JCheckBox
6、(); jCheckBox2 = new javax.swing.JCheckBox(); jCheckBox3 = new javax.swing.JCheckBox(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jLabel1.setText("线程1:"); jLabel2.setText("线程2:"); jLabel3.setText("线程3:"); jCheckBox1.setText("线程挂起");
7、jCheckBox2.setText("线程挂起"); jCheckBox3.setText("线程挂起"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane(); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(la
8、yout.createSequentialGroup() .addGap(36, 36, 36) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT
9、_SIZE, Short.MAX_VALUE) .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlaceme
10、nt.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jLabel1) .addGap(27, 27
11、, 27) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(67, 67, 67) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jCheckBox1) .addComponent(jCheckBox2) .addComponent(jCheckBox3) .addC
12、ontainerGap(115, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(25, 25, 25) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .ad
13、dComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jCheckBox1) .addGap(28, 28, 28) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComp
14、onent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jCheckBox2) .addGap(30, 30, 30) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent
15、(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jCheckBox3) .addContainerGap(34, Short.MAX_VALUE) ); pack(); / </editor-fold> static class SimpleThread extends Thread public SimpleThread(String st
16、r) super(str);/调用其父类的构造方法 public void run()/重写run方法 for(int i=0;i+) Run(); try sleep(int)(Math.random()*1000); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace(); public static char suiJi() char suiJi='1' char ziMu='A','B','C','D
17、39;,'E','F','G','H','I','J','K','L','M','L','N', 'O','P','Q','R','S','T','U','V','W','X','Y','Z' boolean flag=new bo
18、oleanziMu.length; for(int i=0;i<5;i+) int s; do s=(int)(Math.random()*ziMu.length); while(flags); suiJi=ziMus; flags=true; return suiJi; SuppressWarnings("deprecation")public static void Run() /System.out.println("#"+SimpleThread.currentThread().getName(); if(SimpleThread.curr
19、entThread().getName().equals("线程1")&&!jCheckBox1.isSelected() jTextField1.setText(suiJi()+""); if(SimpleThread.currentThread().getName().equals("线程2")&&!jCheckBox2.isSelected() jTextField2.setText(suiJi()+""); if(SimpleThread.currentThread().ge
20、tName().equals("线程3")&&!jCheckBox3.isSelected() jTextField3.setText(suiJi()+""); /* * param args the command line arguments */ public static void main(String args) /* Set the Nimbus look and feel */ /<editor-fold defaultstate="collapsed" desc=" Look and
21、feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see */ try for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels() if ("Nimbus".equals(info.getName
22、() javax.swing.UIManager.setLookAndFeel(info.getClassName(); break; catch (ClassNotFoundException ex) java.util.logging.Logger.getLogger(NewJFrame.class.getName().log(java.util.logging.Level.SEVERE, null, ex); catch (InstantiationException ex) java.util.logging.Logger.getLogger(NewJFrame.class.getNa
23、me().log(java.util.logging.Level.SEVERE, null, ex); catch (IllegalAccessException ex) java.util.logging.Logger.getLogger(NewJFrame.class.getName().log(java.util.logging.Level.SEVERE, null, ex); catch (javax.swing.UnsupportedLookAndFeelException ex) java.util.logging.Logger.getLogger(NewJFrame.class.
24、getName().log(java.util.logging.Level.SEVERE, null, ex); /</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() public void run() new NewJFrame().setVisible(true); new SimpleThread("线程1").start(); new SimpleThread("线程2").start(); ne
25、w SimpleThread("线程3").start(); ); / Variables declaration - do not modify private static javax.swing.JCheckBox jCheckBox1; private static javax.swing.JCheckBox jCheckBox2; private static javax.swing.JCheckBox jCheckBox3; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel
26、2; private javax.swing.JLabel jLabel3; private static javax.swing.JTextField jTextField1; private static javax.swing.JTextField jTextField2; private static javax.swing.JTextField jTextField3; / End of variables declaration 实验用例测试: 1、如图,当程序运行时,三条线程同时运行,输出字符 2、当线程挂1起时,线程1停止,线程一上输出的字符不变 3、当取消挂起时,线程一继续运行四、实验小结(包括问题和解决方法、心得体会等) 一开始卡在线程挂起和取消挂起上面,最后通过资料的查阅和自己的四高解决了这个问题,也学到了许多,丰富了自己的知识面。五、指导教师评语成 绩批阅人日 期实验名称多线程程序设计指导教师杨健实验类型验证实验学时2实验时间2015/12/1二、 实验目的(1) 通过本实验熟悉输入流、输出流的概念(2) 学会使用标准输入/输出流对标准设备进行输入和输出;使用缓冲流进行文件读写。(3) 学会设置并读取程序运行时的参数。(4) 理解输入/输出操作抛出的编译性异
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年主管个人工作述职报告(六)
- 2025至2030全球及中国热灯泡行业项目调研及市场前景预测评估报告
- 奉贤区安全生产知识题库及答案解析
- 中医护理学常见考题题库及答案解析
- 护理理论考试问答题题库及答案解析
- 培训安全员证题库条件要求及答案解析
- 2025【企业物流服务合同】个人物流服务合同书
- 黄金从业资格考试知识点及答案解析
- 2025-2030绿色建筑行业供需趋势及投资战略规划报告
- 2025-2030绿色建筑技术应用现状及市场推广策略专项报告
- CNAS现场评审汇报
- 住院医师规范化培训外科模拟试题及答案解析(第2版)
- 2025年协作机器人产业发展蓝皮书-高工咨询
- 集成电路科学与工程导论 第2版 课件 第一章 集成电路科学与工程发展史
- 五大员管理办法
- 福建省既有建筑幕墙安全隐患排查手册(2025年版)
- 教师待岗人员管理办法
- 支气管哮喘中医课件
- 三级安全教育试题及答案(包含公司级、部门级、班组级)
- 2024年中国山西省电力行业调查报告
- 培训机构教师如何有效跟家长沟通
评论
0/150
提交评论