码迷,mamicode.com
首页 > 其他好文 > 详细

设置定时任务(Timer类的介绍)

时间:2015-06-24 19:01:25      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:timer   定时任务   schedule   

设置定时任务(Timer类的介绍)

在我们的许多项目中,我们都需要用到定时任务,因此想借此博文来对定时任务进行一个介绍。

设置定时任务步骤如下:

  • 先new一个Timer对象 Timer timer = new Timer() ;
  • 然后调用它的schedule方法,例如:timer.schedule(new Task(), 5 * 1000,5*1000);

相信上面的代码我们不会陌生,即使我们没有写过,但我们一定见到过。

要注意的是:上面第二步所提到的schedule方法有四个重载的方法。下面进行一一介绍

  • public void schedule(TimerTask task,long delay)
  • public void schedule(TimerTask task,long delay,long period)
  • public void schedule(TimerTask task,Date time)
  • public void schedule(TimerTask task,Date firstTime,long period)

1)public void schedule(TimerTask task,long delay)
上面函数中的形参中的第一个参数(TimerTask task)就是我们要执行的任务。这是一个TimerTask对象,确切点说是一个实现TimerTask的类的对象,因为TimerTask是个抽象类。我们自定义的MyTask必须实现TimerTask的方法run,将我们想要执行的任务就在这个run方法里面。例如:我们有如下的MyTask类继承TimerTask,任务只是简单的一个输出

import java.util.TimerTask;
public class MyTask extends TimerTask {
   public void run()
  {
    System.out.println("我们的定时任务执行了");
  }
}

上面函数中的第二个参数(long delay)表示延迟多长时间开始执行;需要说明的是:这个long型的值是毫秒数,则 5*1000表示延迟5秒钟
例如:如下的代码,就是表示下面程序启动后延时 5秒后执行任务MyTask

import java.util.Timer;
public class MyTimeTask {
   public static void main(String[] args){
      Timer timer = new Timer(); 
      timer.schedule(new MyTask(), 5 * 1000);
    }
}

2)public void schedule(TimerTask task,long delay,long period)
有时候我们需要重复的执行某样任务,即每隔一段时间就要执行一次,

  • 前段时间在我们的项目中就遇到过,情形如下
    我们需要将心电图采集设备采集到的数据实时的发送到我们的手机的app上面进行绘图显示出来。因此我们需要一个定时任务来反复的在缓存中进行数据的读取。

则上面这个重载函数就能帮我们解决这样的问题。上面这个函数的第一个和第二个参数与前面介绍的完全一样,第三个参数表示的就是我们任务重复执行的间隔时间,即我们的任务每隔period时间就执行一次。

例如:如果我们希望我们的任务每5秒钟执行一次,就将第三个参数这样写即可:5*1000;
就像我们在博文开头写的那行代码
timer.schedule(new Task(), 5 * 1000,5*1000);的意思就是表示当我们的程序启动后延迟5秒钟后开始执行我们指定的任务,之后每隔5秒钟重复执行一次。欧了。

上面介绍的两个基本上时最常用的了,但是,当我们想要将我们的某个任务(例如生日祝福)在2015年6月24日0时0分执行时,上面的两个函数就不能够完成了,因为我们不知道程序什么时候启动,就不无法确定需要延时多长时间才能到达我们指定的时间,

不过我们还有另外两个函数,下面一一介绍

3)public void schedule(TimerTask task,Date time)
上面的一个参数还是我们需要执行的任务,第二个参数就是我们需要指定的具体时间的Date对象了,例如:我们想要将我们的生日祝福于2015年6月24日0时0分送出,则我们直接将其设置为Date对象传入即可。
需要说明的是:在我们使用上面的函数时会有两种情况发生,如下

  • 第一种:程序启动的时间在我们设定的时间之前,例如:2015年6月1日,则我们程序执行要我们指定的时间就会执行我们所指定的任务。
  • 第二种:程序启动的时间在我们设定的时间之后,例如:2015年7月1日0时0分,则当我们的程序刚启动的时候,我们指定的任务就立即执行。

4)schedule最后一个重载的方法是

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

与第三个函数相比,多了一个重复执行任务的间隔时间,与第二个函数类似,这里不再介绍,相信通过前面这么多的介绍,这个函数的各个参数就比较好理解了。

总结

  • 定时任务总的来说是比较简单的,只要你了解了schedule四个重载函数,以及每个重载函数的各个参数的含义,然后就可以正确的使用了

设置定时任务(Timer类的介绍)

标签:timer   定时任务   schedule   

原文地址:http://blog.csdn.net/u010412719/article/details/46623905

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!