`
robinsoncrusoe
  • 浏览: 746761 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

Java--JDK Timer定时器的使用

    博客分类:
  • JAVA
阅读更多
如果要执行一些简单的定时器任务,无须做复杂的控制,也无须保存状态,那么可以考虑使用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()
          返回此任务最近实际 执行的安排 执行时间。

二、例子

下面用Timer实现一个简单例子:

package stu.timer;
import java.util.Date;
import java.util.TimerTask;
/**
* 重复执行的任务
*
* @author leizhimin,2008-10-9 9:20:20
*/
public class TestTimerTask extends TimerTask {
        /**
         * 此计时器任务要执行的操作。
         */
        public void run() {
                Date executeTime = new Date(this.scheduledExecutionTime());
                System.out.println("本次任务执行的时间是" + executeTime);
        }
}

package stu.timer;
import java.util.Timer;
import java.util.TimerTask;
/**
* 测试JDK Timer的执行
*
* @author leizhimin,2008-10-9 9:24:35
*/
public class TestTimer {
        public static void main(String[] args) {
                Timer timer = new Timer();
                TimerTask task = new TestTimerTask();
                timer.schedule(task, 500L, 1000L);
        }
}

运行结果:
本次任务执行的时间是Mon Apr 04 22:00:31 CST 2011
本次任务执行的时间是Mon Apr 04 22:00:32 CST 2011
本次任务执行的时间是Mon Apr 04 22:00:33 CST 2011
本次任务执行的时间是Mon Apr 04 22:00:34 CST 2011
本次任务执行的时间是Mon Apr 04 22:00:35 CST 2011
本次任务执行的时间是Mon Apr 04 22:00:36 CST 2011

        ......
分享到:
评论

相关推荐

    Jdk的Timer 实现定时器

    Java开发工具包(JDK)中的`Timer`类是一个实用工具类,用于调度周期性或一次性任务。在Java编程中,我们经常需要执行一些任务,这些任务需要在特定的时间点或者按照一定的间隔重复执行,例如更新进度条、心跳检测、...

    spring + jdk TimerTask定时器

    // 使用JDK的Timer调度任务 } } ``` ### 触发策略 在Spring中,你可以通过`Trigger`来决定任务何时触发。虽然Spring不直接支持`TimerTask`的触发,但可以自定义一个`Trigger`实现来模拟`TimerTask`的行为。 ```...

    spring+jdk定时器

    Spring框架作为Java领域广泛使用的轻量级框架,提供了与JDK定时器结合以及集成第三方库如Quartz的方式,来实现定时任务。本篇文章将详细探讨“spring+jdk定时器”的实现方式。 首先,我们来看JDK自带的定时器——`...

    jdk定时器调度

    Java中的JDK定时器是基于`java.util.Timer`和`java.util.TimerTask`这两个类实现的,它们提供了在特定时间点或周期性地执行任务的能力。`Timer`类是一个抽象的基类,它负责调度任务的执行,而`TimerTask`则是一个...

    java8集合源码-java:JDK8新特性

    java8集合源码定时器和定时器任务 定时器是线程调度任务以在后台线程中执行的工具。 任务可以安排为一次性执行,或定期重复执行。 与每个 Timer 对象相对应的是一个单独的后台线程,用于按顺序执行所有计时器的任务...

    jdk自带定时器使用方法详解

    JDK 自带的定时器(`java.util.Timer` 类)是一种强大的工具,允许开发者安排任务在后台线程中按特定时间或周期性地执行。它为应用程序提供了灵活的调度功能,比如延迟执行、周期性执行等。下面我们将深入探讨 `...

    java 定时器

    Java定时器,全称为`java.util.Timer`类和配套的`TimerTask`类,是Java标准库中提供的一种定时执行任务的工具。这个强大的计时器功能强大,尤其适合于批量处理任务,如数据同步、日志清理等场景,因此在IT行业中被...

    java定时器(定时任务)

    - `Timer` 类是Java标准库中的一个老版本定时器,主要提供一次性或周期性的任务调度功能。 - 创建一个 `Timer` 对象后,你可以通过 `schedule(TimerTask task, long delay)` 或 `schedule(TimerTask task, Date ...

    【百占百胜】-三创比赛,学习定时器的心路历程and基于spring-task实现定时任务简单介绍

    Java自带了两种定时器:Timer和ScheduledThreadPoolExecutor。Timer是一个单线程模型,如果其执行的任务出现异常,会导致其他任务无法正常执行。因此,从JDK1.5开始,ScheduledThreadPoolExecutor被引入,它是一个...

    Java定时器Timer使用方法详解

    Java定时器Timer使用方法详解 Java中的定时器Timer是使用Timer类和TimerTask类来实现的,Timer类负责计划任务的功能,而TimerTask类则是封装要执行的任务的类。下面将详细介绍Java定时器Timer的使用方法。 一、...

    Timer和TimerTask的使用

    ### Timer和TimerTask的使用详解 #### 一、引言 `Timer` 和 `TimerTask` 是Java中用于实现定时任务的重要工具。它们提供了一种简单有效的方式来安排任务的执行,既可以一次性执行也可以周期性地执行。这对于实现...

    Java定时更新数据—定时器

     Java.util.Timer:一种线程设施,用于安排以后再后台线程中执行的任务.可安排任务执行一次或者定期重复执行.其中几个方法需要我们注意一下:  cancel():终止此计时器,丢弃所有当前已安排的任务。  ...

    浅谈java定时器的发展历程

    1. Timer:Java 定时器的第一个阶段是 Timer,它是在 JDK 1.3 中引入的。Timer 是一个工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。实际上是个线程,定时调度所拥有的 ...

    Spring 任务调度

    3. **JDK Timer的使用**: - **TimerTask的实现**:自定义`TimerTask`子类,重写`run`方法以定义任务内容。例如,`MyTask`类会根据当前时间判断是否在设定的工作时间内执行任务。 - **调度任务**:通过`Timer`的`...

    Java JDK实例宝典

    12 定时器Timer 第9章 Java GUI 9. 1 日历 9. 2 开窗户游戏 9. 3 标准型计算器 9. 4 更改组件的外观 9. 5 自定义对话框 9. 6 制作欢迎画面 9. 7 一个简单的编辑器 9. 8 Swing...

    潭州软件学院 - Java VIP系统基础学习课程表.docx

    - 探究定时器(Timer)和窗口定时器(Task)的使用。 10. **反射机制**: - 学习Java反射API,理解如何在运行时动态地获取类的信息并操作对象。 通过以上内容的学习,学员将能够熟练掌握Java基础,理解面向对象...

    java jdk实列宝典 光盘源代码

    定时器Timer:包括在指定时间执行任务,在指定时间之后执行任务以及在某个时间之后每隔时间段重复执行的任务; 9 Java GUI 日历:使用swing和awt实现一个图形化的日历可以查询星期、日期和年份信息(CalenderTrain....

    java游戏编程入门

    - **JDK安装**:确保你的计算机上已经安装了最新版本的Java开发工具包(JDK),这是Java开发的基础。 - **集成开发环境(IDE)选择**:推荐使用JCreator等支持Java开发的IDE进行项目构建和调试。 - **图形用户界面...

Global site tag (gtag.js) - Google Analytics