您的位置:首页 > 其它

Timer和TimerTask的简单使用

2009-06-21 16:00 274 查看
经常会使用到计时的这个功能,在MFC中可以使用SetTimer这个函数,在OnTimer中去作相应的处理。Java中要实现类似的功能,可以使用java.uitl.Timer和java.uitl.TimerTask这两个类。Timer是用来安排任务执行的一个类。它会专门启动一个线程用来安排任务,这个线程你可以设定为守护线程(通过构造函数Timer(boolean isDaemon)来设定 ),调用schedule()这个函数开始执行。 schedule()有很多版本:
① void schedule(TimerTask task, Date when)
在某个时间(when)开始执行TimerTask, 没有重复

② void schedule(TimerTask task, long delay, long period)
在delay毫秒后周期性的执行TimerTask

③ void schedule(TimerTask task, long delay)
在delay毫秒后开始执行TimerTask, 没有重复

④ void schedule (TimerTask task, Date when, long period)
在when这个时间点后周期性的执行TimerTask

如果要取消Timer, 可以调用cancel()方法来取消这个Timer和对应的线程。

TimerTask是任务的执行体,它有一个抽象方法:

public abstract void run();

我们可以继承这个方法,然后在这个方法中去做具体的处理。这两个类结合使用,就可以实现定时的功能。

下面来看看具体的实现:
1、 首先继承TimerTask
class MyTimerTask extends TimerTask
{
private static int nCount = 0;

@Override
public void run()
{
Log.w("==== run ====", "nCount = " + nCount++);
}

@Override
public boolean cancel()
{
mbCanceled = true;
return super.cancel();
}
}

2、 通过Timer执行TimerTask
//新建一个Timer,不设为守护线程
Timer myTimer = new Timer(false);
//开始执行(每一秒执行一次)
myTimer.schedule(new MyTimerTask(), 0l, 1000l);

3、 结束Timer
myTimer.cancel();
//Java也要释放内存(垃圾回收器更快的回收)
myTimer = null;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: