最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

多线程实验报告

来源:动视网 责编:小OO 时间:2025-09-25 16:31:27
文档

多线程实验报告

宁波工程学院电信学院计算机教研室实验报告课程名称:Java2实验项目:多线程实验指导教师:****实验位置:电信楼机房姓名:***学号:****班级:****日期:一、实验目的1、掌握多线程编程的特点和工作原理;2、掌握编写线程程序的方法3、了解线程的调度和执行过程4、掌握线程同步机理二、实验环境windows记事本,javajdk1.60版本,cmd命令运行窗口三、实验内容实验一:应用Java中线程的概念写一个Java程序(包括一个测试线程程序类TestThread,一个Thread类的子类
推荐度:
导读宁波工程学院电信学院计算机教研室实验报告课程名称:Java2实验项目:多线程实验指导教师:****实验位置:电信楼机房姓名:***学号:****班级:****日期:一、实验目的1、掌握多线程编程的特点和工作原理;2、掌握编写线程程序的方法3、了解线程的调度和执行过程4、掌握线程同步机理二、实验环境windows记事本,javajdk1.60版本,cmd命令运行窗口三、实验内容实验一:应用Java中线程的概念写一个Java程序(包括一个测试线程程序类TestThread,一个Thread类的子类
宁波工程学院电信学院计算机教研室

实验报告

课程名称:      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 A

{

    public static void main(String args[])

    {

        Test1 A1;

        Test2 A2;

        A1=new Test1();

        A2=new Test2();

        A1.start();

        A2.start();

    }

}

class PrintThread extends Thread

{

}

class Test1  extends PrintThread

{

    public void run()

    {

     for(int i=1;i<=10;i++)

        {

            System.out.println("线程1正在运行!");

        }

    }

}

class Test2 extends PrintThread

{

    public void run()

    {

     for(int i=1;i<=5;i++)

        {

            System.out.println("线程2正在运行!");

        }

    }

}

运行结果:

实验二:

将上述程序用Runnable接口改写,并上机验证源程序

public class D

{

 

 

 

}

class Move implements Runnable

{

 

  线程1正在运行!");

 

  线程2正在运行!");

 

 

  

  

   

  

 

 

 

  

  

   

  

 

运行结果:

实验三:

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:处于新建状态的线程被启动后,将进入线程队列排队,这个时候具备了运行的条件,一旦轮到 CPU 的时候,就可以脱离创建它的主线程开始自己的生命周期运行:就绪的线程被调度进入运行状态,每一个 Thread 类及其子类的对象都有一个重要的run方法,当线程对象被调度执行的时候,它将自动调用本对象的 run方法,从第一句代码开始执行。

文档

多线程实验报告

宁波工程学院电信学院计算机教研室实验报告课程名称:Java2实验项目:多线程实验指导教师:****实验位置:电信楼机房姓名:***学号:****班级:****日期:一、实验目的1、掌握多线程编程的特点和工作原理;2、掌握编写线程程序的方法3、了解线程的调度和执行过程4、掌握线程同步机理二、实验环境windows记事本,javajdk1.60版本,cmd命令运行窗口三、实验内容实验一:应用Java中线程的概念写一个Java程序(包括一个测试线程程序类TestThread,一个Thread类的子类
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top