JAVA实验-多媒体与多线程处理

时间:2024.4.27

广州大学学生实验报告

开课学院及实验室:计算机科学与工程实验室                                   20141228

一、实验目的

1. 掌握线程的概念、线程的生命周期。

2. 掌握采用继承Thread 类创建子线程。

3. 掌握使用Runnable 接口使类线程化。

二、实验器材

1.MacBook Pro一台

2.操作系统:OS X Yosemite

3.编程软件:eclipse

三、实验内容及原理

一  继承线程类

     public class MultiThreadExample{

       public static void main(String []args){

              new MyThread("A").start();//启动线程A

              new MyThread("B").start();//启动线程B

       }

}

class MyThread extends Thread{

       public MyThread(String n){

              super(n); //线程名称

       }

       public void run(){

              for(int i=0;i<5;i++){

                       try{

                                  // 睡眠一段随机时间

                                 Thread.sleep((long)(Math.random() * 1000));

                       }catch(InterruptedException e){

                                 e.printStackTrace();

                       }

                       System.out.print(getName()); //打印线程名称

              }

       }

}

二、实现Runnable接口

public class MultiThreadExample2{

       public static void main(String []args){          

              Thread t1=new Thread(new CustomThread("A"));

              Thread t2=new Thread(new CustomThread("B"));

              t1.start();//启动线程A

              t2.start();//启动线程B

       }

}

class CustomThread implements Runnable{

       String name;

       public CustomThread(String n){

              name=n;

       }

       public void run(){

Thread current=Thread.currentThread();//取得当前线程

               for(int i=0;i<5;i++){

                       try{

                                  // 睡眠一段随机时间

                                 current.sleep((long)(Math.random() * 1000));

                       }catch(InterruptedException e){

                                 e.printStackTrace();

                       }

                       System.out.print(name); //打印线程名称

              }

       }

}

三 模拟小球平抛和自由落体的

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

public class BallThread extends Applet implements Runnable{

         Thread red, blue;

         Graphics redPen, bluePen;

         int t=0;

         public void init(){

                   red = new Thread(this);

                   blue = new Thread(this);

                   redPen = getGraphics();

                   bluePen = getGraphics();

                   redPen.setColor(Color.red);

                   bluePen.setColor(Color.blue);

         }

         public void start(){

                   red.start();

                   blue.start();

         }

         public void run(){

                   while(true){

                            t=t+1;

                            if(Thread.currentThread()==red){

                                     if(t>100)t=0;

                                     redPen.clearRect(0,0,110,400);

                                     redPen.fillOval(50,(int)(1.0/2*t*9.8),15,15);

                                     try{

                                               red.sleep(40);

                                     }catch(InterruptedException e){}

                            }else if(Thread.currentThread()==blue){

                                     bluePen.clearRect(120,0,900,500);

                                     bluePen.fillOval(120+7*t,(int)(1.0/2*t*9.8),15,15);

                                     try{

                                               blue.sleep(40);

                                     }catch(InterruptedException e){}

                            }

                   }

         }

}

四、实验过程原始数据记录

1.  模拟小球平抛和自由落体的

五、实验结果及分析

通过这次实验,学会了java中多线程的应用,主要有2种方式实现,一种是子类化Thread,另一种是实现Runnable协议。


第二篇:实验八 JAVA多线程


实验八 多线程

? 实验目的

1.线程的概念。

2.掌握使用Tread类和Runnable接口创建线程。

? 实验环境

JDK1.4以上版本, Eclipse集成开发环境

? 实验内容

1. 编写一个应用程序创建两个线程,一个线程打印输出1~1000之间所有的奇数,另外一个线程打印输出1~1000之间所有的偶数,要求两个线程随机休眠一段时间后继续打印输出下一个数。分别使用Runnable接口和Tread类编程实现。

实验1比较简单,自己完成!

2.选择两个城市作为预选旅游目标,实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000毫秒以内),哪个先显示完毕,就决定去哪个城市。请分别用Runnable接口和Thread类实现。

下面是用Thread类的实现,参考程序如下,用Runable接口实现方法类似。 public class Ex82 {

public static void main(String[] args){

String[] citys = {"合肥","淮南"};

ThreadCity1 thread1 = new ThreadCity1(citys);

ThreadCity2 thread2 = new ThreadCity2(citys);

thread1.start();

thread2.start();

/*

* 请在下面补充几行代码,保证thread1和thread2都允许结束再执行后面的if语句。 */

While(thread1.isAlive() || thread2.isAlive()){

}

if(thread1.getTime()<thread2.getTime()){

System.out.println("决定去:"+citys[0]);

}

else{

1

System.out.println("决定去:"+citys[1]); }

}

}

class ThreadCity1 extends Thread{

}

class ThreadCity2 extends Thread{

private String[] citys; private long time; ThreadCity2(String[] citys){ } public long getTime(){ } return time; this.citys=citys; private String[] citys; private long time; public long getTime(){ } ThreadCity1(String[] citys){ } public void run(){ long start = System.currentTimeMillis(); for(int i=0;i<10;i++){ } try{ } catch(Exception e){ } System.out.println("Thread1:"+citys[0]); Thread.sleep((int)(Math.random()*1000)); this.citys=citys; return time; time = System.currentTimeMillis() - start; System.out.println("Thread1 Ends!"); }

2

public void run(){ long start = System.currentTimeMillis(); for(int i=0;i<10;i++){ } try{ } catch(Exception e){ } System.out.println("Thread2:"+citys[1]); Thread.sleep((int)(Math.random()*1000)); time = System.currentTimeMillis() - start; System.out.println("Thread2 Ends!");

3

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

宁波工程学院电信学院计算机教研室实验报告课程名称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编写一个程序其功能是运行之后其中有一个线程可以输...

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

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

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

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

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

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

JAVA线程实验报告

实验报告课程名称实验项目专业班级姓名实验室号实验时间指导教师JAVA编程基础JAVA线程计算机科学与技术0801班学号信息楼220实验组号0820xx1110批阅时间常燕成绩沈阳工业大学实验报告实验名称JAVA...

操作系统实验报告_进程和线程

计算机科学与软件学院操作系统上机实验报告学生姓名学号班级班实验日期20xx417实验名称进程和线程实验目的理解unixLinux下进程和线程的创建并发执行过程实验内容1进程的创建2多线程应用实验步骤及分析此部分...

多线程实验报告(25篇)