java timer启动_Java Timer 启动

JAVA技巧(Java定时执行任务的实现方法)2009年02月07日 星期六10:36定时执行任务的三种方法:1)java.util.Timer.2)ServletContextListener.3)org.springframework.scheduling.timer.ScheduledTimerTask1)java.util.Timer

这个方法应该是最常用的,不过这个方法需要手工启动你的任务:

Timer timer=newTimer();

timer.schedule(newListByDayTimerTask(),10000,86400000);

这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。2)ServletContextListener

这个方法在web容器环境比较方便,这样,在web server启动后就可以

自动运行该任务,不需要手工操作。

将ListByDayListenerimplementsServletContextListener接口,在

contextInitialized方法中加入启动Timer的代码,在contextDestroyed

方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:com.sysnet.demo.util.MyTimerTask3)org.springframework.scheduling.timer.ScheduledTimerTask

如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer

.xml中加入下面的内容就可以了:<?xml  version="1.0"encoding="UTF-8"?>beans PUBLIC"-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">1000086400000下面给出方法2的一个例子供大家参考:

Java代码:importjava.util.Timer;importjavax.servlet.ServletContextEvent;importjavax.servlet.ServletContextListener;publicclassMyTimerTaskimplementsServletContextListener{privateTimer timer=null;

@OverridepublicvoidcontextDestroyed(ServletContextEvent event) {//TODO Auto-generated method stubtimer.cancel();

event.getServletContext().log("定时器销毁");

System.out.println("停止备份程序……");

}

@OverridepublicvoidcontextInitialized(ServletContextEvent event) {//在这里初始化监听器,在tomcat启动的时候监听器启动,考试,大提示可以在这里实现定时器功能timer=newTimer(true);

event.getServletContext().log("定时器已启动");//添加日志,可在tomcat日志中查看到timer.schedule(newexportHistoryBean(event.getServletContext()),0,5*1000);//调用 exportHistoryBean,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时;}

}importjava.util.Calendar;importjava.util.TimerTask;importjavax.servlet.ServletContext;publicclassexportHistoryBeanextendsTimerTask

{privatestaticfinalintC_SCHEDULE_HOUR=0;privatestaticbooleanisRunning=false;privateServletContext context=null;publicexportHistoryBean(ServletContext context)

{this.context=context;

}

@Overridepublicvoidrun()

{

Calendar c=Calendar.getInstance();if(!isRunning)

{if(C_SCHEDULE_HOUR==c.get(Calendar.HOUR_OF_DAY))

{

isRunning=true;

context.log("开始执行指定任务");

isRunning=false;

context.log("指定任务执行结束");

}else{

context.log("上一次任务执行还未结束");

}

}

}

}

web.xml里加入一下代码:com.sysnet.demo.util.MyTimerTask

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值