前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 定时器

Java 定时器

作者头像
希希里之海
发布2019-08-31 20:21:03
1.3K0
发布2019-08-31 20:21:03
举报
文章被收录于专栏:weixuqin 的专栏

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. 例子

举个例子:

代码语言:javascript
复制
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():返回此定时任务最近实际被调度执行的时间。若定时任务还没有开始首次执行,其返回值将是未定义的。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java 定时器
    • 1. 概述
      • 2. 例子
        • 3. Timer 常用构造函数和方法
          • 4. Timer 常用方法
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档