<div class="iteye-blog-content-contain" style="font-size: 14px">
我使用jdk 自带的 timer 类来实现。
主要的业务代码
- package com.sxl;
- import java.util.TimerTask;
- import javax.servlet.ServletContext;
- /**
- * 定时器
- * @author sxl
- *
- */
- public class DelFileTask extends TimerTask{
- private static boolean isRunning = false;
- private ServletContext context = null;
- public DelFileTask() {
- super();
- }
- public DelFileTask(ServletContext context) {
- this.context = context;
- }
- @Override
- public void run() {
- if (!isRunning) {
- context.log("开始执行指定任务");
- /**
- * 自己的业务代码
- */
- isRunning = false;
- context.log("指定任务执行结束");
- } else {
- context.log("上一次任务执行还未结束");
- }
- }
- }
这个类 主要是继承 TimerTask并实现它的run 方法
下面就是监听类了 监听服务器的启动并将任务添加到任务栈
- package com.sxl;
- import java.util.Calendar;
- import java.util.Date;
- import javax.servlet.ServletContextEvent;
- import javax.servlet.ServletContextListener;
- public class ContextListener implements ServletContextListener{
- public ContextListener() {
- }
- private java.util.Timer timer = null;
- /**
- * 初始化定时器
- * web 程序运行时候自动加载
- */
- @Override
- public void contextInitialized(ServletContextEvent arg0) {
- /**
- * 设置一个定时器
- */
- timer = new java.util.Timer(true);
- arg0.getServletContext().log("定时器已启动");
- /**
- * 定时器到指定的时间时,执行某个操作(如某个类,或方法)
- */
- //设置执行时间
- Calendar calendar =Calendar.getInstance();
- int year = calendar.get(Calendar.YEAR);
- int month = calendar.get(Calendar.MONTH);
- int day =calendar.get(Calendar.DAY_OF_MONTH);//每天
- //定制每天的1:00:00执行,
- calendar.set(year, month, day, 01, 00, 00);
- Date date = calendar.getTime();
- // System.out.println(date);
- int period = 24 * 60 * 60 * 1000;
- //每天的date时刻执行task,每隔persion 时间重复执行
- timer.schedule(new DelFileTask(arg0.getServletContext()), date, period);
- // 在 指定的date时刻执行task, 仅执行一次
- // timer.schedule(new DelFileTask(arg0.getServletContext()), date);
- arg0.getServletContext().log("已经添加任务调度表");
- }
- /**
- * 销毁
- */
- @Override
- public void contextDestroyed(ServletContextEvent arg0){
- timer.cancel();
- arg0.getServletContext().log("定时器销毁");
- }
- }
这个类 主要是设置一个调度器 并让他 按一定的要求去执行任务。
任务类 监听器类 都实现了 下一步就是在web.xml 配置监听器了
- <listener>
- <listener-class>com.sxl.ContextListener</listener-class>
- </listener>
到了这里 一个简单的定时器基本上实现了 也能跑通了 接下来 需要做的 就是根据自己项目的实际要求 去丰富定时器类 DelFileTask 和启动定时器的ContextListener 。
java.util.Timer 类的 schedule方法说明
schedule(TimerTask task, long delay)
task
- 所要安排的任务。delay
- 执行任务前的延迟时间,单位是毫秒。IllegalArgumentException
- 如果 delay 是负数,或者 delay + System.currentTimeMillis() 是负数。IllegalStateException
- 如果已经安排或取消了任务,或者已经取消计时器。schedule(TimerTask task, Date time)
task
- 所要安排的任务。time
- 执行任务的时间。IllegalArgumentException
- 如果 time.getTime() 是负数。IllegalStateException
- 如果已经安排或取消了任务,已经取消了计时器,或者计时器线程已终止。schedule(TimerTask task,long delay, long period)
在固定延迟执行中,根据前一次执行的实际执行时间来安排每次执行。如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则后续执行也将被延迟。从长期来看,执行的频率一般要稍慢于指定周期的倒数(假定Object.wait(long) 所依靠的系统时钟是准确的)。
固定延迟执行适用于那些需要“平稳”运行的重复活动。换句话说,它适用于在短期运行中保持频率准确要比在长期运行中更为重要的活动。这包括大多数动画任务,如以固定时间间隔闪烁的光标。这还包括为响应人类活动所执行的固定活动,如在按住键时自动重复输入字符。
task
- 所要安排的任务。delay
- 执行任务前的延迟时间,单位是毫秒。period
- 执行各后续任务之间的时间间隔,单位是毫秒。IllegalArgumentException
- 如果delay 是负数,或者 delay + System.currentTimeMillis() 是负数。IllegalStateException
- 如果已经安排或取消了任务,已经取消了计时器,或者计时器线程已终止。
schedule(TimerTask task, Date firstTime, long period)
在固定延迟执行中,根据前一次执行的实际执行时间来安排每次执行。如果由于任何原因(如垃圾回收或其他后台活动)而延迟了某次执行,则后续执行也将被延迟。在长期运行中,执行的频率一般要稍慢于指定周期的倒数(假定Object.wait(long) 所依靠的系统时钟是准确的)。
固定延迟执行适用于那些需要“平稳”运行的重复执行活动。换句话说,它适用于在短期运行中保持频率准确要比在长期运行中更为重要的活动。这包括大多数动画任务,如以固定时间间隔闪烁的光标。这还包括为响应人类活动所执行的固定活动,如在按住键时自动重复输入字符。
task
- 所要安排的任务。firstTime
- 首次执行任务的时间。period
- 执行各后续任务之间的时间间隔,单位是毫秒。IllegalArgumentException
- 如果time.getTime() 是负数。IllegalStateException
- 如果已经安排或取消了任务,已经取消了计时器,或者计时器线程已终止。</div>
相关推荐
java web 定时器例子
Java_Web定时器使用
项目需要,开发一个简单的定时器,结合spring
javaweb的几种定时方式,有助于了解定时的工作原理。对于定时器不了解的朋友可以看看
java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util. TimerTask)
本文详细介绍了java web中启动定时器的两种方法,供学习者参考。
绍如何在JAVA WEB程序中添加定时器
web定时器组件,该组件为java定时器基本应用程序!
javaweb定时器,需要tomcat6,部署后启动tomcat,访问index.jsp页面,定时器工作,kill Tomcat服务结束工作,本人用的Sql2000数据库,可以自行更改。完整工程源代码。
spring和java的定时器 BeanFactory beans=new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext1.xml");
java web项目,使用servlet实现定时器功能,代码请详见附件
java游戏服务器中,需要使用到的定时器功能 现在要讲解的是一个quartz-all-1.8.6.jar另外一个是ScheduledThreadPoolExecutor。
在Java Web程序中加入定时任务,这里介绍两种方式使用监听器注入,使用Spring注解@Scheduled注入,需要的朋友可以参考下
Java定时器在Web中的应用.doc
Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 String serverAddr=jtfServer.getText(); //得到服务器地址 ...
本篇文章主要介绍了Java Web项目中编写定时任务的实现,具有一定的参考价值,有兴趣的可以了解一下。
这是Java Webproject中实现定时器的学习文档
spring管理quart实现定时器功能,不需要在web.xml进行任何配置,spring统一管理,可下载直接复制到项目中使用
只需要在web.xml文件中添加监听器listener,然后加入附件中的文件,并将lstener指向所添加的文件TimerTaskListener,定时任务的研发便可轻松搞定!
java socket client 断线重连的简单实现 有什么意见可以提哦