- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(职业经理培训)定时执
行
定时执行任务的三种方法:
1).Timer.
2)ServletContextListener.
3)..ScheduledTimerTask
1).Timer
这个方法应该是最常用的,不过这个方法需要手工启动你的任务:
Timertimer=newTimer();
(newListByDayTimerTask(),10000,0);
这里的 ListByDayTimerTask 类必须 extendsTimerTask 里面的 run()
方法。
2)ServletContextListener
这个方法在 web 容器环境比较方便,这样,在 webserver 启动后就可
以
自动运行该任务,不需要手工操作。
将 ListByDayListenerimplementsServletContextListener 接口,在
contextInitialized 方 法 中 加 入 启 动 Timer 的 代 码 , 在
contextDestroyed
方法中加入 cancel 该 Timer 的代码;然后在中,加入 listener:
<listener>
<listener-class>..MyTimerTask</listener-clas>
</listener>
3)..ScheduledTimerTask
如 果 你 用 spring , 那 么 你 不 需 要 写 Timer 类 了 , 在
schedulingContext-timer
.xml 中加入下面的内容就可以了:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEbeansPUBLIC"-//DTDBEAN//EN""spring-">
<beans>
<beanid="timer"class="..TimerFactoryBean">
<propertyname="scheduledTimerTasks">
<list>
<reflocal="MyTimeTask1"/>
</list>
</property>
</bean>
<beanid="MyTimeTask"class="."/>
<beanid="MyTimeTask1"class="..ScheduledTimerTask">
<propertyname="timerTask">
<refbean="MyTimeTask"/>
</property>
<propertyname="delay">
<value>10000</value>
</property>
<propertyname="period">
<value>0</value>
</property>
</bean>
</beans>
下面给出方法 2 的一个例子供大家参考:
Java 代码:
import.Timer;
import.ServletContextEvent;
import.ServletContextListener;
publicclassMyTimerTaskimplementsServletContextListener{
privateTimertimer=null;
@Override
publicvoidcontextDestroyed(ServletContextEventevent){
//TODOAuto-generatedmethodstub
();
().log("定时器销毁");
.println("停止备份程序……");
}
@Override
publicvoidcontextInitialized(ServletContextEventevent){
//在这里初始化监听器,在 tomcat 启动的时候监听器启动,可以在
这里实现定时器功能
timer=newTimer(true);
().log("定时器已启动");//添加日志,可在 tomcat 日志中查看到
(newexportHistoryBean(()),0,5*1000);//调用exportHistoryBean ,
0 表示任务无延迟,5*1000 表示每隔 5 秒执行任务,60*60*1000 表示
一个小时;
}
}
import.Calendar;
import.TimerTask;
import.ServletContext;
publicclassexportHistoryBeanextendsTimerT
文档评论(0)