线程是处理器调度和分派的基本单位,线程调度策略反映了操作系统的性能,利用线程可以加快程序的执行,本文利用数字时钟来简单介绍关于线程问题,数字时钟也可以用Timer定时器来做,之后会在博客中介绍
package clock;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.util.*;
import java.text.*;
public class Clock extends JFrame implements Runnable
{
JLabel label;
public Clock()
{
super("数字时钟");
this.setDefaultCloseOperation(3);
Container c=this.getContentPane();
label=new JLabel();
c.add(label);
this.setBounds(300, 300, 400, 100);
c.setBounds(300, 300, 400, 200);
c.setLayout(new FlowLayout(FlowLayout.CENTER));
this.setResizable(true);
this.setVisible(true);
}
public void run()
{
while(true)//当线程启动时
{
//try
//{
Date data=new Date();
SimpleDateFormat ft=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
String str=ft.format(data);
String str_1 = null,str_2=null;
Calendar c = Calendar.getInstance();
//c.setTime(new Date(System.currentTimeMillis()));
int week=c.get(Calendar.DAY_OF_WEEK);
int time=c.get(Calendar.AM_PM);
if(time==0)
str_2="上午";
if(time==1)
str_2="下午";
switch(week)
{
case 1:
str_1="星期日";
break;
case 2:
str_1="星期一";
break;
case 3:
str_1="星期二";
break;
case 4:
str_1="星期三";
break;
case 5:
str_1="星期四";
break;
case 6:
str_1="星期五";
break;
case 7:
str_1="星期六";
break;
}
label.setText(str+" "+ str_1+str_2);
try
{
Thread.sleep(10000);
}
catch(InterruptedException ex){break;}
}
}
public static void main(String args[])
{
Thread thread;
Clock clock=new Clock();
thread=new Thread(clock);
thread.start();
//System.out.println(clock.str);
}
}
本篇设置时钟的更新时间为10秒钟,本文利用runnable接口创建线程,run为一个线程体,用目标对象来创建线程对象,我们可以把要执行的语句放在线程体里,让线程停止可以调用sleep方法,切记sleep应与try和 catch一起使用,避免引起中断异常。
创建线程也有俩种方法,一种是本文所用到的先创建一个类实现runnable接口,在用该类作为目标对象创建线程,此种方法的好处是还可以继承其他类,而另一种方法是用Thread的子类来创建线程,同样要实现run方法,而这样就无法继承其他类,因为java的单继承性。