java中的线程问题----模拟数字时钟

线程是处理器调度和分派的基本单位,线程调度策略反映了操作系统的性能,利用线程可以加快程序的执行,本文利用数字时钟来简单介绍关于线程问题,数字时钟也可以用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的单继承性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值