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;
① 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;
相关文章推荐
- Android Timer,TimerTask简单的使用
- Java中的Timer和TimerTask的使用
- 定时任务:Java中Timer和TimerTask的使用
- C#使用timespan和timer完成一个简单的倒计时器
- gevent中的定时器 timer的简单使用
- Struts 2 简单使用 log4j2(timer 拦截器不输出信息)
- Android中使用Timer和TimerTask
- 定时任务:Java中Timer和TimerTask的使用
- Android倒计时实现及Timer和TimerTask的使用
- Java定时器Timer和TimerTask的使用
- 定时任务:Java中Timer和TimerTask的使用
- Boost.asio的简单使用(timer,thread,io_service类)
- Timer和TimerTask的使用(一
- qt下的时钟程序(简单美丽,继承自QWidget的Clock,用timer调用update刷新,然后使用paintEvent作画就行了,超详细中文注释)good
- 定时任务:Java中Timer和TimerTask的使用
- C#使用timer实现的简单闹钟程序
- Timer、TimerTask的简单应用及如何解决多次调度相同任务。
- java之Timer和TimerTask简单demo(分享)
- 简单了解Timer与TimerTask
- Boost.asio的简单使用(timer,thread,io_service类)