TimerTask的详细使用方法

来源:互联网 发布:比价网源码 编辑:程序博客网 时间:2024/06/05 19:21

如果要执行一些简单的定时器任务,无须做复杂的控制,也无须保存状态,那么可以考虑使用JDK入门级的定期器Timer来执行重复任务。

 

JDK中,定时器任务的执行需要两个基本的类:

    java.util.Timer;

    java.util.TimerTask;

 

要运行一个定时任务,最基本的步骤如下:

1、建立一个要执行的任务TimerTask

2、创建一个Timer实例,通过Timer提供的schedule()方法,将 TimerTask加入到定时器Timer中,同时设置执行的规则即可。

 

当程序执行了Timer初始化代码后,Timer定时任务就会按照设置去执行。

 

Timer中的schedule()方法是有多种重载格式的,以适应不同的情况。该方法的格式如下:

 void schedule(TimerTask task, Date time)

          安排在指定的时间执行指定的任务。

 void schedule(TimerTask task, Date firstTime, long period)

          安排指定的任务在指定的时间开始进行重复的固定延迟执行。

 void schedule(TimerTask task, long delay)

          安排在指定延迟后执行指定的任务。

 void schedule(TimerTask task, long delay, long period)

          安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

 

Timer是线程安全的,此类可扩展到大量同时安排的任务(存在数千个都没有问题)。其所有构造方法都启动计时器线程。可以调用cancel()终止此计时器,丢弃所有当前已安排的任务。purge()从此计时器的任务队列中移除所有已取消的任务。此类不提供实时保证:它使用 Object.wait(long)方法来安排任务。

 

TimerTask 是一个抽象类,由 Timer安排为一次执行或重复执行的任务。它有一个抽象方法run()----计时器任务要执行的操作。因此,每个具体的任务类都必须继承TimerTask类,并且重写run()方法。另外它还有两个非抽象的方法:

 boolean cancel()

          取消此计时器任务。

 long scheduledExecutionTime()

          返回此任务最近实际执行的安排执行时间。

 

 

原创粉丝点击