多线程实验报告_第1页
多线程实验报告_第2页
多线程实验报告_第3页
多线程实验报告_第4页
多线程实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

宁波工程学院电信学院计算机教研室实验报告课程名称: Java 2 实验项目: 多线程实验 指导教师: * 实验位置: 电信楼机房 姓 名: * 学 号: * 班 级: * 日 期: 一、实验目的1、掌握多线程编程的特点和工作原理;2、掌握编写线程程序的方法3、了解线程的调度和执行过程4、掌握线程同步机理二、实验环境windows记事本,java jdk 1.60版本,cmd命令运行窗口三、实验内容实验一:应用Java中线程的概念写一个Java程序(包括一个测试线程程序类TestThread,一个Thread类的子类PrintThread)。在测试程序中用子类PrintThread创建2个线程,使得其中一个线程运行时打印10次“线程1正在运行”,另一个线程运行时打印5次“线程2正在运行源程序:public class Apublic static void main(String args)Test1 A1;Test2 A2;A1=new Test1();A2=new Test2();A1.start();A2.start();class PrintThread extends Threadclass Test1 extends PrintThreadpublic void run()for(int i=1;i=10;i+)System.out.println(线程1正在运行!);class Test2 extends PrintThreadpublic void run()for(int i=1;i=5;i+)System.out.println(线程2正在运行!);运行结果:实验二:将上述程序用Runnable接口改写,并上机验证源程序public class Dpublic static void main(String args)Move move=new Move();move.test1.start();move.test2.start();class Move implements RunnableThread test1,test2;Move()test1=new Thread(this);test1.setName(线程1正在运行!);test2=new Thread(this);test2.setName(线程2正在运行!);public void run()if(Thread.currentThread()=test1)for(int i=1;i=10;i+)System.out.println(test1.getName();elsefor(int i=1;i=5;i+)System.out.println(test2.getName();运行结果:实验三:import java.awt.*;import java.awt.event.*;public class E public static void main(String args) new FrameMoney(); class FrameMoney extends Frame implements Runnable,ActionListener int money=100; TextArea text1,text2; Thread 会计,出纳; int weekDay; Button start=new Button(开始演示); FrameMoney() 会计=new Thread(this); 出纳=new Thread(this); text1=new TextArea(12,15); text2=new TextArea(12,15); setLayout(new FlowLayout(); add(start); add(text1); add(text2); setVisible(true); setSize(360,300); validate(); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); start.addActionListener(this); public void actionPerformed(ActionEvent e) if(!(出纳.isAlive() 会计=new Thread(this); 出纳=new Thread(this); try 会计.start(); 出纳.start(); catch(Exception exp) public synchronized void 存取(int number) /存取方法 if(Thread.currentThread()=会计) text1.append(今天是星期+weekDay+n); for(int i=1;i=3;i+) /会计使用存取方法存入90元,存入30元,稍歇一下 money=money+number; /这时出纳仍不能使用存取方法 try Thread.sleep(1000); /因为会计还没使用完存取方法 catch(InterruptedException e) text1.append(帐上有+money+万n); else if(Thread.currentThread()=出纳) text2.append(今天是星期 +weekDay+n); for(int i=1;i=2;i+) /出纳使用存取方法取出30元,取出15元,稍歇一下 money=money-number/2; /这时会计仍不能使用存取方法 try Thread.sleep(1000); /因为出纳还没使用完存取方法 catch(InterruptedException e) text2.append(帐上有+money+万n); public void run() if(Thread.currentThread()=会计|Thread.currentThread()=出纳) for(int i=1;i=3;i+) /从周一到周三会计和出纳都要使用帐本 weekDay=i; 存取(30); 运行结果: 四、实验心得与小结通过本次实验,基本了解了线程的概念,作用,方法以及使用规则。1.首先:java 程序是建立在线程之上的。.2.创建线程必须继承 Thread class 它已经为线程的创建和运行做了必要的配置。run是线程就重要的方法。你必须覆写这个方法达到你想要的目的。3.run方法所包含的代码就是和其他线程同时运行的代码以达到同一时刻运行多段代码的目的。当终止了 run以后。这个线程也就结束了。调用线程的 start方法才会执行 run方法。4.线程的生命周期:新建Thread.State.NEW:当一个 Thread 类或者其子类的对象被声明并创建时,新的线程对象处于新建状态,此时它已经有了相应的内存空间和其他资源start方法尚未被调整用就绪可执行状态Thread.State.RUNNABLE:处于新建状态的线程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论