首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java.util.Timer(定时施行某项程序)

2012-09-19 
java.util.Timer(定时执行某项程序)import java.util.TimerTaskimport java.util.Timerpublic class Tim

java.util.Timer(定时执行某项程序)

import java.util.TimerTask;import java.util.Timer;public class TimerTest  {    public static void main(String[] args) throws java.io.IOException  {             TimerTask task = new TimerTask() {               public void run() {                 System.out.println("Hi");               }             };        Timer timer = new Timer();        timer.schedule(task, 0, 500);   //任务、时延、间隔时间    }}

以上这段代码每半秒钟输出一次"Hi"。

解释:
TimerTask类:将所要运行的任务封装其run方法中。
Timer类:设定定时器的参数,包括起始时间、间隔时间、时延时间,详情见schedule方法。
注意点:同一个TimerTask对象不能两次加入到Timer中执行,若你有多个任务要执行,需要声明多个TimerTask的实例。
 TimerTask task = new TimerTask() {     public void run() {         System.out.println("Hi");     }  };  Timer timer = new Timer();   timer.schedule(task, 0, 500);   timer.schedule(task, 0, 1000);   // 错误代码

在了解了Timer和Timertask类的运行方式之后,下面就来介绍一个实
际的例子:

在web中实现任务计划-简单的说就相当于实现一个闹钟的功能
实现这个功能,要完成两个步骤:1.定时器的设置;2.对这个定时器
的启动运行和停止进行实时监听。
第一步在初级篇中已经很容易的完成了,第二步的工作不必自己动手
,把这个工作推给容器,来看看怎么实现的:
tomcat中自己有个监听器,我们只需implements
javax.servlet.ServletContextListener接口,实现这个接口中的两
个方法contextInitialized(ServletContextEvent
event)和contextDestroyed(ServletContextEvent event),看了方
法名就知道是干什么用的了。下面是具体的代码
package test.timer.MyListener ;import javax.servlet.ServletContextListener;import javax.servlet.ServletContextEvent;import java.util.TimerTask;import java.util.Timer;public class MyListener implements ServletContextListener{private java.util.Timer timer = null;public void contextInitialized(ServletContextEvent event) {    TimerTask task = new TimerTask() {         public void run() {         System.out.println("Hi");         }     };     timer = new Timer();     event.getServletContext().log("定时器已启动");     timer.schedule(task, 0, 500);       event.getServletContext().log("已经添加计划任务");}public void contextDestroyed(ServletContextEvent event) {timer.cancel();event.getServletContext().log("定时器已关闭");}}  //定时器就运行在整个Web工程的生命期里了 

最后在你的web.xml中加入这么几句:
<listener><listener-class>test.timer.MyListener</listener-class></listener>   

好了,试试看吧!
仔细设置一下时间和run的方法,用这么简单的代码完全可以构建一
个复杂的后台运行程序 ;_0

热点排行