专题:定时器

 
专题:定时器
     Java 中的定时器是java.util.Timer类。
Timer 是和TimerTask都是线程,而且是彼此独立的线程
     Timer 类给出一系列的scheduler()方法,用于定时执行一个TimerTask类型的对象。TimerTask的对象则包含具体的run()方法,这个方法可以调度系统所要执行的内部或外部任务。
     在每一个Timer对象背后,都有一个背景线程,用来顺序执行Timer的任务。这些任务应当迅速结束,不然就会霸占timer用来执行任务的线程,从而延迟后面的任务。
     当所有的任务都完成后,timer的任务执行线程就会顺利的结束并被java垃圾收集器所收集,只是垃圾收集的事件不能预测。如果程序想要迅速的结束timer的任务执行线程,调用方就应当调用timer的cancel()方法。
     Timer 类是线程安全的,可以有多个线程共享一个Timer对象,而不需要同步化。Timer类实际上是用Object.wait(long)方法实现定时的,因此,Timer类不能保证实时效果,Timer类可以处理多达几千个任务。
 
用定时器写的Applet时钟
package com . match . timer ;
import java . awt . Graphics ;
import java . awt . Color ;
import java . util .*;
import java . text . DateFormat ;
public class Clock extends java . applet . Applet implements Runnable
{
    private Thread clockThread = null ;
   
    //Applet method
    public void init ()
    {
        setBackground ( Color . green );
    }
    //Applet method
    public void start ()
    {
        if ( clockThread == null )
        {
            clockThread = new Thread ( this , "Clock" );
            clockThread . start (); //thread starts running
         }
    }
    //A Thread method.
    public void run ()
    {
        Thread myThread = Thread . currentThread ();
        while ( clockThread == myThread )
        {
            repaint (); //causes paint() to be called
            try
            {
                 Thread . sleep ( 1000 );
            }
            catch ( InterruptedException e ){ }
        }
    }
    //An applet method.
    public void paint ( Graphics g )
    {
        Calendar cal = Calendar . getInstance ();
        Date date = cal . getTime ();
        DateFormat dateFormatter = DateFormat . getTimeInstance ();
        g . drawString ( dateFormatter . format ( date ), 5 , 10 );
    }
    // overrides Applet's stop method, not Thread's
    public void stop ()
    {
        clockThread = null ;
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值