JAVA定时器(java.util.Timer)

原创 2010年06月04日 16:47:00

【1】Java 定时器(java.util.Timer)有定时触发计划任务的功能,通过配置定时器的间隔时间,在某一间隔时间段之后会自动有规律的调用预先所安排的计划任务(java.util.TimerTask)。与每个 Timer 对象相对应的是单个后台线程,用于顺序地执行所有计时器任务。计时器任务应该迅速完成。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程。因此,这就可能延迟后续任务的执行,而这些任务就可能“堆在一起”,并且在上述不友好的任务最终完成时才能够被快速连续地执行。另外,由于我们希望当Web工程启动时,定时器能自动开始计时,在整个Web工程的生命期里,定时器能在每晚深夜触发一次报表计算引擎天等。因此定时器的存放位置也值得考查,不能简单的存在于单个Servlet或JavaBean中,必须能让定时器宿主的存活期为整个Web工程生命期,在工程启动时能自动加载运行。结合这两点,跟Servlet上下文有关的监听器就最合适不过了,通过在工程的配置文件中加以 合理配置,会在工程启动时自动运行,并在整个工程生命期中处于监听状态。   
    下面就Servlet监听器结合Java 定时器来讲述整个实现过程。要运用Servlet监听器需要实现javax.servlet.ServletContextListener接口,同时实现它的contextInitialized(ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数。考虑定时器有个建立和销毁的过程,看了前面两个接口函数,就不容置疑的把建立的过程置入 contextInitialized,把销毁的过程置入contextDestroyed了。

package com.korby.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import com.korby.pub.TimerManager;
/**
* 启动定时器的监听器
* @author korby
* @version 1.0
*/

public class TimerListener implements ServletContextListener {
    private TimerManager tm = null;
    public void contextInitialized(ServletContextEvent sce) {
      int day,hour,min,sec;     
       day = 26; hour = 16; min = 42; sec = 0;    
       tm = new TimerManager(day,hour,min,sec);
     }
    public void contextDestroyed(ServletContextEvent sce) {

        tm.destoryTimer();
     }
}

package com.korby.pub;
import java.util.Timer;
import java.util.Date;
import java.util.Calendar;
/**
* 定时器
* @author korby
* @version 1.0
*/
public class TimerManager {
     Timer t = null;
    public TimerManager(int day,int hour,int min,int sec) {
         time(day,hour,min,sec);
     }
    public void time(int day,int hour,int min,int sec){   
     Calendar c = Calendar.getInstance();
     c.set(Calendar.DAY_OF_MONTH,day);
     c.set(Calendar.HOUR_OF_DAY,hour);
     c.set(Calendar.MINUTE,min);
     c.set(Calendar.SECOND,sec);
     Date date = c.getTime();
     System.out.println(c.getTime());
     t= new Timer();
     MyTask mt = new MyTask();
     t.schedule(mt, date);
     }
    public void destoryTimer(){
     t.cancel();
     }
}

package com.korby.pub;

import java.util.TimerTask;

/**

* 计划任务代码

* @author korby

* @version 1.0

*/

public class MyTask extends TimerTask{

    public MyTask() { }

    /**

      * 任务块

     */

    public void run() {

         System.out.println("定时器RUN");

     }

}

 

在web.xml中设置一个监听器:

 

<listener>

   <listener-class>com.korby.servlet.TimerListener</listener-class>

</listener>

 

 

【2】 java.util.Timer

void cancel()  终止此计时器,丢弃所有当前已安排的任务。

int purge()   从此计时器的任务队列中移除所有已取消的任务。

void schedule(TimerTask task,Date time)  安排在指定的时间执行指定的任务。

void schedule(TimerTask task,Date firstTime, long period)安排指定的任务在指定的时间开始进行重复的固定延迟执行。

void schedule(TimerTask task,long delay)  安排在指定延迟后执行指定的任务。

void schedule(TimerTask task,long delay, long period)安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

void schedule(TimerTask task,long delay, long period)安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

void scheduleAtFixedRate(TimerTask task,long delay, long period)安排指定的任务在指定的延迟后开始进行重复的固定速率执行。

 

【3】java.util.TimerTask由 Timer 安排为一次执行或重复执行的任务。

boolean cancel()          取消此计时器任务。

abstract void run()          此计时器任务要执行的操作。

long scheduledExecutionTime()       返回此任务最近实际 执行的已安排 执行时间。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yangsen251024/archive/2009/12/19/5036890.aspx

java定时器

  • 2017年01月19日 15:46
  • 874B
  • 下载

Java_Web定时器使用

  • 2013年01月28日 09:45
  • 99KB
  • 下载

JAVA定时器word文档

  • 2010年12月01日 18:05
  • 94KB
  • 下载

java.util.Timer 定时问题

java.util.Timer 定时问题 相信大家都很熟悉java.util.Timer类,java类库中提供的简单的执行定时任务的类,使用也非常简单。自定义任务扩展抽象类TimeTask,实现抽象...
  • xiaojianpitt
  • xiaojianpitt
  • 2012-06-13 14:32:08
  • 10312

细说java.util.Timer

Timer是用于管理在后台执行的延迟任务或周期性任务,其中的任务使用java.util.TimerTask表示。任务的执行方式有两种: 按固定速率执行:即scheduleAtFixedRate的两个重...
  • mhmyqn
  • mhmyqn
  • 2015-08-29 00:59:38
  • 5288

任务调度--使用java.util.Timer实现

任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务。 举个例子,比如说我们希望一个系统每周日晚上9点都将数据库文件备份一次,这时我们就可以使用任务调度来实现。为了更加的方便,我们需...
  • u012116457
  • u012116457
  • 2015-09-11 13:26:50
  • 1787

java定时器(timer类使用详解)

  • 2008年10月28日 20:31
  • 207KB
  • 下载

java.util.Timer和java.util.TimerTask以及 javax.swing.Timer

一.java.util.Timer和java.util.TimerTask 1.概览 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。 Time...
  • liaoqianwen123
  • liaoqianwen123
  • 2013-12-04 10:43:07
  • 1466

java 定时器 的几种实现及优缺点

一:java Timer 在 java.util.Timer包中的Timer 类可以实现定时功能。 1. 使用 Timer 进行任务调度 public class TimerTest extend...
  • shukebai
  • shukebai
  • 2014-12-22 10:31:40
  • 2535

java.util.Timer

public class Timer extends Object 一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定...
  • zhaoliang_yong
  • zhaoliang_yong
  • 2013-11-27 19:52:39
  • 221
收藏助手
不良信息举报
您举报文章:JAVA定时器(java.util.Timer)
举报原因:
原因补充:

(最多只允许输入30个字)