Java作业—利用继承Thread类创建三个线程

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

《Java语言》课程作业

(第二次)

题目

学院

专业

班别

学号

姓名

2010年11月30日

一、课程题目

6、利用继承Thread类创建三个线程,线程1输出三个“good morning!”,线程2输出三个“good afternoon!”,线程3输出三个“good night!”,每个线程输出一次后休眠100s。在main主线程中创建并启动这三个线程。

二、题目分析与设计

Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口。本题使用继承Thred类run ()方法实现多线程技术。

首先设计一个继承类ExtendsThread,添加继承Thread基类的实现,定义一个字符串的参数字段hello,该字段在ExtendsThread实例化的同时获取方法参数,如:“good morning!”“good night!”“good afternoon!”,在ExtendsThread类中实现基类Thread的run()方法,使用for循环调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,该方法主要功能输出三个hello字段的字符串,当线程调用了自身的sleep()方法,就会进入阻塞状态(该状态既停止当前线程,但并不释放所占有的资源,当sleep()结束,该线程进入可运行状态,继续等待OS 分配时间片;

程序集与类视图如下:

本程序开发环境:Eclipse

三、测试分析

四、实验总结和心得

java中多线程就是一个类或一个程序执行或管理多个线程执行任务的能力,每个线程可以独立于其他线程而独立运行,当然也可以和其他线程协同运行,一个类控制着它的所有线程,可以决定哪个线程得到优先级,哪个线程可以访问其他类的资源,哪个线程开始执行,哪个保持休眠状态。Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口。Runnable是接口,接口可以实现多继承,况且Runnable只有一个run方法,很适合继承。在使用Thread的时候只需继承Thread,并且new一个实例出来,调用start()方法即可以启动一个线程。

通过了实验了解了JA V A线程创建,可运行,运行中,阻塞,死亡五中状态的使用技巧,掌握多线程的基本技术,当然还有很多地方需要更多实践和更深刻的认识。

附录:源代码

import java.util.*;

import java.text.*;

import ng.Thread;

public class ExtendsThread extends Thread{

private String hello;

public ExtendsThread(String hello)

{

this.hello=hello;

}

public void run()

{

try

{

for(int i=0; i<3; ++i )

{

Date now = new Date();

DateFormat d1 = DateFormat.getDateTimeInstance();

String nowtime = d1.format(now);

System.out.println(this.getName()+ ':'+this.hello+" 线程运行完

毕时间:"+nowtime);

sleep(1000*100);

}

}

catch(Exception e)

{

e.printStackTrace();

System.out.println("消息:"+e.getMessage());

}

}

public static void main(String[] args)

{

ExtendsThread thread1 = new ExtendsThread("good morning! ");

ExtendsThread thread2 = new ExtendsThread("good afternoon!");

ExtendsThread thread3 = new ExtendsThread("good night! ");

thread1.setName("线程一");

thread2.setName("线程二");

thread3.setName("线程三");

thread1.start();

thread2.start();

thread3.start();

}

}

相关文档
最新文档