美文网首页
Java 定时器

Java 定时器

作者: 希希里之海 | 来源:发表于2019-09-15 10:52 被阅读0次

Java 定时器

1. 概述

Timer 可以按计划执行重复的任务或者定时执行指定任务,这是因为 Timer 内部利用了一个后台线程 TimerThread 有计划地执行指定任务。

  • Timer:是一个实用工具类,该类用来调度一个线程(schedule a thread) ,使它可以在将来某一时刻执行。Java 的 Timer 类可以调度一个任务运行一次或定期循环运行。

    Timer tasks should complete quickly,即定时器中的操作要尽可能花费短的时间。

  • TimerTask:一个抽象类,它实现了 Runnable 接口。我们需要扩展该类以便创建自己的 TimerTask,这个 TimerTask 可以被 Timer 调度。

一个 Timer 对象对应的是单个后台线程,其内部维护了一个 TaskQueue,用于顺序执行定时器任务 TimeTask。

即:Timer 是定时器,TimerTask 是定时器任务


2. 例子

举个例子:

public class TimerDemo {

    public static void main(String[] args) {
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                // 重写 run() 方法,返回系统时间
                System.out.println(System.currentTimeMillis());
            }
        };
        Timer timer = new Timer();
        // 在经过 2000 毫秒的初始化延时后执行一次(单词执行)
        timer.schedule(task, 2000);
        // 从现在开始每间隔 1000 ms 计划执行一个任务(规律性重复执行调度 TimerTask)
        timer.schedule(task, 0 ,1000);
    }

}

3. Timer 常用构造函数和方法

3.1 Timer 的构造函数
  • Timer():创建一个新的定时器
3.2 Timer 的方法
  • void cancel():终止该定时器。(当应用程序想要快速地终止一个定时器执行线程,它应该调用 Timer 的 cancel() 方法。
  • int purge():从该定时器队列中移除所有取消的定时任务并且返回被移除任务的数目。
  • void schedule(TimerTask task, Date time):在某个时间点调度任务执行。如 timer.schedule(task, 2000)
  • void schedule(TimerTask task, long delay, long period):以当前的时间为参考时间,在此时间基础上延迟指定的毫秒数,再以某一间隔时间无限次数地执行某一任务。如 timer.schedule(task, 0, 1000)
  • void schedule(TimerTask task, Date firstTime, long period):调度任务于 firstTime 开始,以固定时间间隔的方式重复执行,后续将以大约 period 毫秒数的固定时间间隔执行。

4. Timer 常用方法

定时任务都是抽象类 TimerTask 子类的实例,这些子类实现了 Runnable 接口,当子类化 TimerTask 的时候,你需要重写其 void run() 方法。

注意:定时任务应该很快完成。

方法
  • boolean cancel():取消这个定时任务
  • long scheduleExecutionTime():返回此定时任务最近实际被调度执行的时间(当定时任务正在执行此方法被调用了,返回值就是运行中定时任务的调度执行时间)。
  • long scheduleExecutionTime():返回此定时任务最近实际被调度执行的时间。若定时任务还没有开始首次执行,其返回值将是未定义的。

相关文章

  • java定时器

    java定时器 什么是Java定时器?Java 定时器就是在给定的间隔时间执行自己的任务; Java实现定时器有以...

  • java中的定时器

    1、java中普通定时任务 Timer定时器 ScheduledThreadPoolExecutor 定时器 Ti...

  • 定时器(Quartz) [kwɔːts]

    Quartz定时器就是对java中Timer定时器的封装,支持Cron表达式定时 使用步骤: 1.定义任务类(指定...

  • JAVA实现定时任务的几种方式

    JAVA实现定时任务的几种方式 @(JAVA)[spring|quartz|定时器]近期项目开发中需要动态的添加定...

  • 35 定时器

    问题: 定时器技术有哪些? 答案: 前端当中:(1)setinterval(2)settimeout java当中...

  • java开发常用的定时器

    java开发常用的定时器 参考[http://www.javaboy.org/2019/0418/springbo...

  • java定时器

    定时器是java很常用的一个功能,最近写项目时常用,在此记录下常用的几种方法,以备复习之用。

  • java 定时器

    http://blog.csdn.net/bingLoVezi/article/details/15905675 ...

  • Java 定时器

    Java 定时器 1. 概述 Timer 可以按计划执行重复的任务或者定时执行指定任务,这是因为 Timer 内部...

  • Java 定时器

    Timer 缺陷 不支持多线程并发 任务抛出异常会停止所有任务的执行 Quartz Quartz 是一个完全由 J...

网友评论

      本文标题:Java 定时器

      本文链接:https://www.haomeiwen.com/subject/abxoectx.html