疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

定时任务Java编写综述


 

       目前我所用过的定时任务机制主要分三类:OS级的Linux crontab命令方式、Java语言级的JDK自带API、第三方API接口如Quartz(当然,其他MVC框架如Spring基于Quartz实现了更人性化的API接口,此类接口一并归入Quartz类族)。

  这三种方式相比,OS级不用专门开启监听器,占用系统资源较少,是定时任务首选的实现方式;JDK自带API主要是Timer和TimeTask,这些API提供的接口功能简单,往往不能满足用户定时任务设置需要;Quartz是Java语言编写的API,其可以单独部署,也可以作为系统的模块嵌入既有代码中,通过开启监听触发定时任务的方式实现,相对而言,特别是用此种方式开辟大量监听很耗资源。

  下面分别介绍这三种常用的定时任务实现方式。

  2. Java语言级的JDK自带API

  java.util.Timer定时器,实际上是个线程,定时调度所拥有的TimerTasks。

  一个TimerTask实际上就是一个拥有run方法的类,需要定时执行的代码放到run方法体内,TimerTask一般是以匿名类的方式创建。

  完整的Timer如下:

  java.util.Timer timer = new java.util.Timer(true);

  【注】true 说明这个timer以daemon方式运行(优先级低,程序结束timer也自动结束),注意,

  javax.swing 中也有一个Timer类,如果import中用到swing包,要注意名字的冲突。

  TimerTask task = new TimerTask() {

  public void run() {

  ... //每次需要执行的代码放到这里面。

  }

  };

  调度task的方法有:

  timer.schedule(task, time);

  // time为Date类型:在指定时间执行一次。

  timer.schedule(task, firstTime, period);

  // firstTime为Date类型,period为long

  // 从firstTime时刻开始,每隔period毫秒执行一次。

  timer.schedule(task, delay)

  // delay 为long类型:从现在起过delay毫秒执行一次

  timer.schedule(task, delay, period)

  // delay为long,period为long:从现在起过delay毫秒以后,每隔period

  // 毫秒执行一次。

  完整的例子

  由两个类组成,一个定制任务,一个调用java.util.Timer

  定制任务:import java.util.Timer;

  public class TimerTaskTest extends java.util.TimerTask{

  public void run() {

  // TODO Auto-generated method stub

  System.out.println("start");

  }

  }

  import java.util.Timer;

  public class TimerTaskTest extends java.util.TimerTask{

  public void run() {

  // TODO Auto-generated method stub

  System.out.println("start");

  }

  }

  调用java.util.Timer

  import java.util.Timer;

  public class Test {

  public static void main(String[] args){

  Timer timer = new Timer();

  timer.schedule(new TimerTaskTest(), 1000, 2000);

  }

  }

  import java.util.Timer;

  public class Test {

  public static void main(String[] args){

  Timer timer = new Timer();

  timer.schedule(new TimerTaskTest(), 1000, 2000);

  }

  }

  根据上面的介绍,便可以在1秒后,每隔2秒执行一次程序 

         随着IT行业对人才实战型的要求越来越高,很多参加软件开发培训的学员深受欢迎,而疯狂Java培训(疯狂软件学院官网http://www.fkjava.org/ 抢座热线:020-28309358 , 020-28309378咨询QQ:707552864 , 544627560),的实际教学经验告诉我们,零基础人员也是一样可以学好IT的。积累项目经验。疯狂软件学院的最热门课程选择是Java软件开发课程,知识沉淀深厚的疯狂Java老师团队,让你感受Java的魅力,激发你对于编程的热爱,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,成为真正的技术高手;通过大量全真企业项目疯狂训练,迅速积累项目经验。让你成为技能型的现代化高端人才,迅速获得高薪就业!疯狂Java培训班,Android培训班火热报名中。