实验12 java多线程(含答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);