JAVA线程实验报告

时间:2024.5.2

实验报告

课程名称:            JAVA编程基础             

实验项目:            JAVA线程               

专业班级:      计算机科学与技术0801班       

姓    名:              学    号:              

实验室号:  信息楼  220  实验组号:     08   

实验时间:  2011.11.10   批阅时间:          

指导教师:    常   燕    成    绩:           


沈阳工业大学实验报告

实验名称:JAVA线程

沈阳工业大学实验报告

一、使用实现RUNNABLE接口主要程序:

class Compute implements Runnable

{

privateint sum;

Thread s1,s2;

public Compute() {

    s1=new Thread(this);

    s1.setName("s1");

    s2=new Thread(this);

    s2.setName("s2");

    }

publicvoid setfirst(int s) {

    sum=s;}

    publicvoid run() {

        int mu = 0;

        while(true)

        {

           

            if (Thread.currentThread()==s1)

               

            {  mu++;

                sum=sum+mu;

                System.out.println("正在计算1加到99的和。。。");

                if(sum>=4950)

                {System.out.println("计算结束。");

                    return;}

            }

            elseif(Thread.currentThread()==s2)

            {

                System.out.println("目前的计算结果为:"+sum);

               

                 if(sum>=4950)

                {

                    return;

                }

            }

            try

            {

                Thread.sleep(800);

            }

            catch(InterruptedException e){}

        }}

}运行结果:

二、使用继承THREAD类实现的主要程序:

class ComputeEX extends Thread

{

    publicstaticints=0,m=0;

    publicvoid run()

    {

    while(true)

    {

    m++;

    s=s+m;

        System.out.println("正在计算1加到99的和。。。");

        //System.out.println("目前的计算结果为:"+s);

        if(s>=4950)

        {

            System.out.println("计算结束。");

           

            return;

        }

        try{Thread.sleep(800);}

        catch(InterruptedException e){}

    }

    }

}运行结果:

、检测线程的实现的主要程序:

class MainThread implements Runnable

{

     publicstaticintsa=0;

    Thread mm;

    MainThread()

    {

        mm=new Thread(this);

    }

    publicvoid run()

    {

        ListenThread ss1=new ListenThread();

        ss1.s1.start();

        while(true)

        {

            sa++;

        if(sa!=99)

        {

            System.out.println("主线程正在运行"+sa);

                }

        else

            return;

        try{Thread.sleep(1800);}

        catch(InterruptedException e){}

        }

    }

}

运行结果:


第二篇:西南科技大学 刘涌 JAVA 实验六


面向对象程序设计A(Java)

实验报告

实验名称:  多线程实验        

实验类型:                     

指导教师:      刘涌         

专业班级:   信安1203        

    名:    黄学强       

   号:   20111899         

实验地点:    东六E301       

实验成绩:                    

             

                    日期: 20##年4月30日

实验六多线程实验

一、实验目的:

练习多线程类的两种实现方法,理解多线程程序的生命周期。

二、实验内容:

编写一多线程程序,实现如下功能:

(1)一个线程进行阶乘和的运算(1!+2!+3!+……+30!),每次阶乘计算时间随机间隔0.5-1秒;

(2)另一个线程每隔0.1秒时间读取上个线程的运算结果和计算进程,并在图形界面中实时显示结果。

三、实验要求

1正确设计显示运行结果和计算进程的图形用户界面;

2分别采用Thread类的子类和Runable接口两种方式完成两个线程的设计;

3进行全面的测试并分析测试结果;

四、实验设计

1、先用Java Application 方式建立应用程序框架。 其中选用frame on screen ;

2、实现界面设计。 其中用 xyLayout布局。

3、 用两种方法实现多线程

方法一、设计两个线程ComputeThread 和ReadThread线程分别继承Thread线程。

ComputeThread线程实现阶乘和运算,用for循环实现阶乘和运算。ReadThread线程实现在窗口显示结果和进程。

方法二、ComputeThread 和ReadThread线程分别接口Runnable。

 运算方法同上。

五、实验过程

1、按照设计的步骤实现。

     遇到的问题:Text只显示到6!

     解决方法:删除ReadThread的run()方法下while循环语句中的count++,因为ReadThread线程和ComputeThread线程不同步。

    2、  用setValue()方法显示进度条,setText()方法显示结果。

六、实验结果

讨论与分析

进行全面的测试并分析测试结果;

新建——Thread.State.NEW:当一个 Thread 类或者其子类的对象被声明并创建时,新的线程对象处于新建状态,此时它已经有了相应的内存空间和其他资源start方法尚未被调整用就绪可执行状态——Thread.State.RUNNABLE:处于新建状态的线程被启动后,将进入线程队列排队,这个时候具备了运行的条件,一旦轮到 CPU 的时候,就可以脱离创建它的主线程独立开始自己的生命周期运行:就绪的线程被调度进入运行状态,每一个 Thread 类及其子类的对象都有一个重要的run方法,当线程对象被调度执行的时候,它将自动调用本对象的 run方法,从第一句代码开始执行。

简要说明你在该实验中的收获与体会。                  

(1)首先:java 程序是建立在线程之上的。. 

(2)创建线程必须继承 Thread class 它已经为线程的创建和运行做了必要的配置。run是线程就重要的方法。你必须覆写这个方法达到你想要的目的。

(3)run方法所包含的代码就是和其他线程同时运行的代码以达到同一时刻运行多段代码的目的。当终止了 run以后。这个线程也就结束了。调用线程的 start方法才会执行 run方法。

体会:

通过实验设计了正确的显示运行结果和计算进程的图形用户界面;完成了对分别采用Thread类的子类和Runable接口两种方式完成两个线程的设计;并且进行全面的测试并分析测试结果;对Java的学习有了很大的提升作用。

附录:

代码

阶乘运算

for(n = 1 ; n <= 30 ; n++)

    {

      save = save * n ;  //进行阶乘

      sum = sum  + save ; //进行阶乘和运算

      str = "+" + n + "!" ;

      str1 = str1 +str ; //字符串相加

      try {

        Thread.sleep(500 + (int) (Math.random() * 500));//随机生成 05~1秒

      }

      catch (InterruptedException ex) {

      }

}

显示结果 和进度条

 while (true) {

      f.text.setText(ct.str1); //显示阶乘字符

      f.jd.setValue(ct.n); //显示进度条

      String s = String.valueOf(ct.sum);

      f.text1.setText(s); //显示结果

      try {

        Thread.sleep(100); //休眠100毫秒

      }

      catch (InterruptedException ex) {

      }

    }

单击开始按钮

void jButton1_actionPerformed(ActionEvent e) {

    ComputeThread ct = new ComputeThread();

    ReadThread rt = new ReadThread(ct , this);

     //ct.start();  继承Thread类则:

     //rt.start();

    new Thread(ct).start();//接口Runnableze:

    new Thread(rt).start();

  }

更多相关推荐:
多线程实验报告

宁波工程学院电信学院计算机教研室实验报告课程名称Java2姓名实验项目多线程实验学号指导教师班级实验位置电信楼机房日期一实验目的1掌握多线程编程的特点和工作原理2掌握编写线程程序的方法3了解线程的调度和执行过程...

java多线程实验报告及代码

一实验内容题目一练习教材第325页327页的717273三个实验题分析结果并总结输出结果与分析结果的异同题目二编写程序实现阶乘和的运算一个线程进行阶乘和的运算而另一个线程则每隔一段时间读取上一个线程的运算结果设...

java多线程实验报告

计算机科学与技术学院实验报告电子版课程Java程序设计

Java多线程实验报告

实验4Java多线程实验时间实验地点一实验目的及要求1了解线程的概念2学习简单的多线程编程二实验设备环境及要求三实验任务1阅读给定的JavaApplication程序按要求回答问题并写出运行结果2按要求编写一个...

实验报告五 多线程

面向对象程序设计实验报告

多线程实验报告

面向对象程序设计AJava实验报告实验名称多线程实验类型设计型实验指导教师刘涌专业班级软件1103姓名周毅学号20xx1752实验地点东六E301实验成绩日期20xx年5月3日实验3多线程一实验目的练习多线程类...

java多线程实验报告

Java实验程序设计实验报告实验名称多线程一实验目的1掌握线程和多线程的概念2掌握创建线程的两种方法及其区别3了解线程的启动终止同步互斥和优先级等概念二实验内容1编写一个程序其功能是运行之后其中有一个线程可以输...

多核多线程技术OpenMP_实验报告2

OpenMP模块一基础练习3编译执行执行结果简答与思考1写出关键的并行代码1四个线程各自执行6次迭代includequotstdafxhquotincludeltomphgtinttmainintargcTCH...

学号姓名--多线程应用基础实验报告

浙江大学城市学院实验报告课程名称Java高级程序设计实验项目名称多线程应用基础实验学生姓名专业班级学号一实验目的1掌握多线程的基本概念2掌握两种线程的建立方法3掌握线程的协同控制方法4掌握多线程程序设计二实验内...

JAVA线程程序设计(小时钟)实验报告(附完整代码)

线程程序设计一课题内容和要求内容设计和编写一个编写一个指针式时钟程序应用线程实现时钟的走动要求本实验旨在通过实验培养学生将JAVA线程的相关知识点包括线程调度线程同步等有机结合并加以综合应用在实验中设计多线程程...

java实验报告——多线程的应用

南京理工大学泰州科技学院实验报告书课程名称Java面向对象程序设计实验题目实验八班级09计算机2学号姓名尤源指导教师李丛Java面向对象程序设计实验报告1一实验目的1掌握Java概念2熟悉继承Thread类的多...

实验12 java多线程(含答案)

实验12Java多线程一实验目的1了解线程的概念2学习简单的多线程编程二实验任务1阅读给定的JavaApplication程序按要求回答问题并写出运行结果2按要求编写一个JavaApplication程序并编译...

多线程实验报告(25篇)