模拟一个电子时钟,它可以在任何时候被启动或者停止,并可以独立的运行。
1.定义一个Clock类。它继承Label类,并实现Runnable接口。这个类中有一个Thread类型的clocker域,以及start()和run()方法。在run()方法中,每隔一秒就把系统时间显示为label的文本。
class Clock extends Label implements Runnable
{
//定义Thread类型的clocker域
public Thread clocker=null;
public Clock()
{
//初始化时,把label设置为当前系统时间
//调用toString方法转化为String类型
setText(new Date().toString());
}
//控制线程的启动
public void start()
{
if(clocker==null)
{
//clocker通过Thread类构造方法得到的对象进行初始化,并将Clock类的当前对象作为参数
clocker=new Thread(this);
clocker.start();
}
}
//控制线程的停止
public void stop()
{
clocker=null;
}
//实现Runnable接口中的run()方法
public void run()
{
Thread currentThread=Thread.currentThread();
//判断clocker是否是当前运行的线程
while(clocker==currentThread)
{
setText(new Date().toString());
try
{ //休眠1s钟
clocker.sleep(1000);
}
catch (InterruptedException ie)
{
System.out.println("Thread error:"+ie);
}