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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验12:Java多线程

一、实验目的

(1)了解线程的概念。

(2)学习简单的多线程编程。

二、实验任务

(1)阅读给定的Java Application程序,按要求回答问题并写出运行结果。

(2)按要求编写一个Java Application程序,并编译、运行这个程序。

三、实验内容

1.输入下面的Java Application程序,运行该程序,并简要分析程序的运行结果。

1:class SimpleThread extends Thread {

2:public SimpleThread(String str) {

3:【代码1】super(str); //调用其父类的构造方法

4:}

5:public void run() { //重写run方法

6:for (int i = 0; i < 10; i++) {

7:System.out.println(i + " " + getName());

8://打印次数和线程的名字

9:try {

10:sleep((int)(Math.random() * 1000));

11://线程睡眠,把控制权交出去

12:}

13:catch (【代码2】) { } //捕获中断异常

14:}

15:System.out.println("DONE! " + getName());

16://线程执行结束

17:}

18:}

1:public class TwoThreadsTest {

2:public static void main (String args[]) {

3:new SimpleThread("First").start();

4://第一个线程的名字为First

5:SimpleThread spt= new SimpleThread("Second");//第二个线程的名字为Second

6:【代码3】spt.start(); //启动second线程

7:}

8:}

2、使用接口创建线程

1:public class MyThread2 implements Runnable【代码1】{

2:int count=1,number;

3:public MyThread2(int i){

4:number=i;

5:System.out.println("创建线程"+number);

6:}

7:public void run()【代码2】{//重写run()方法

8:while(true){

9:System.out.println(" 线程"+number+":计数"+count);

10:if(++count==6)return;

11:}

12:}

13:public static void main(String[] args){

14:for(int i=0;i<5;i++)

15:new Thread(【代码3】).start();

16:}}

3、实现两个定时线程,一个线程每隔1秒显示一次,一个线程每隔

3秒显示一次。

答:源程序:

import java.io.*;

public class Time

{

static Lefthand left; //声明静态的类的对象

static Righthand right;

public static void main(String args[])

{

left=new Lefthand() ; //创建两个线程。

right=new Righthand();

left.start(); //线程开始运行后,Lefthand类中的run方法将被执行。

right.start();

}

}

class Lefthand extends Thread //lefthand类继承Thread类

{

public void run()

{

for(;;)

{

System.out.println("每1秒显示一次!");

Try

{

sleep(1000); //使当前活动线程睡眠1秒

}

catch(InterruptedException e){} //捕捉异常

}

}

}

class Righthand extends Thread

{

public void run()

{

for(;;)

{

System.out.println("每3秒显示一次!");

Try

{

sleep(3000);

}

catch(InterruptedException e){}

}

}

}

运行结果: (这一列是注释)

每1秒显示一次

每3秒显示一次

每1秒显示一次

每1秒显示一次

每3秒显示一次

每1秒显示一次

每1秒显示一次

每1秒显示一次

每3秒显示一次

每1秒显示一次

每1秒显示一次

每1秒显示一次

每3秒显示一次

每1秒显示一次

每1秒显示一次

每1秒显示一次

每3秒显示一次

每1秒显示一次

每1秒显示一次

3、创建两个线程,每个线程打印出线程名字后再睡眠,给其它线程以执行的机会,主线程也要打印出线程名字后再睡眠,每个线程前后共睡眠5次。要求分别采用从Thread中继承和实现Runnable接口两种方式来实现程序。(即写两个程序)

import java.io.*;

class NameThread extends Thread{

int time; //睡眠的时间

public NameThread(String n,int t){

super(n);

time=t;

}

public void run(){

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

System.out.println(getName()+" "+i);

try{

Thread.sleep(time);

相关文档
最新文档