Timer

Timer
定义:
有且仅有一个后台线程对多个业务线程进行定时定频率的调度。
主要构件:Timer 和TimerTask Timer可以理解为后台的线程,TimerTask可以理解为业务线程。
Timer工具类详解

这里写图片描述
这里有两个主要属性,一个是thread,一个是queue。thread里的TimerThread对应的就是后台线程,queue里的TimeTask对应的就是我们的业务线程。我们主要关注Timer和TimerTask就可以,其余模块是对我们是透明的。
下面讲个小栗子:


package com.imooc.timer;

import java.util.TimerTask;

public class MyTimerTask extends TimerTask {

    private String name;

    public MyTimerTask(String inputName) {
        name = inputName;
    }
    //重写run方法
    public void run() {
        System.out.println("The current exec name is :" + name);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
package com.imooc.timer;

import java.util.Timer;

public class MyTimer {
      public static void main(String[] args) {
        //创建一个Timer实例
        Timer timer=new Timer();
        //创建一个MyTimerTask实例
        MyTimerTask myTimerTask =new MyTimerTask("No.1");
        //通过Timer定时定频率调用myTimerTask的业务逻辑
        //即第一次执行是在当前时间的两秒之后,每隔一秒执行一次
        timer.schedule(myTimerTask,2000L,1000L);
    }

}

下面介绍一下Timer的定时函数:
schedule(task,time)
参数:

  • task-所要安排的任务
  • time-首次执行任务的时间

作用:
时间等于或超过time时首次执行task,且执行一次

schedule(task,time,period)
参数:

  • task-所要安排的任务
  • time-首次执行任务的时间
  • period-执行一次task的时间间隔,单位是毫秒

作用:
时间等于或超过time时首次执行task,之后每隔period毫秒执行一次task

schedule(task,delay)
参数:

  • task-所要安排的任务
  • delay-等待执行任务的时间

作用:
等待delay毫秒后首次执行task,且只执行一次

schedule(task,delay,period)
参数:

  • task-所要安排的任务
  • delay-等待执行任务的时间
  • period-执行一次task的时间间隔,单位是毫秒

作用:
等待delay毫秒后首次执行task,之后每隔period毫秒执行一次task

scheduleAtFixedRate(task,time,period)
作用:
时间等于或超过time时首次执行task,之后每隔period毫秒执行一次task

scheduleAtFixedRate(task,relay,period)
作用:
等待delay毫秒后首次执行task,之后每隔period毫秒执行一次task

Timer主要依靠时间点来触发,分为距离现在还有多长时间和指定具体的时间到点了触发。

Timer的其他函数:
cancel():取消所有任务
purge():返回取消的任务的个数,并将取消的任务从当前的队列移除。
TimerTask 的一些函数:
cancel():取消任务
scheduleExecutionTime() :返回整型的最近一次任务安排的时间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值