转自http://tomenjoy.iteye.com/blog/157268
2007年09月12日 星期三 下午 04:(java.util.Timer)有定时触发计划任务的功能,通过配置定时器的间隔时间,在某一间隔时间段之后会自动有规律的调用预先所安排的计划任务(java.util.TimerTask)。另外,由于我们希望当Web工程启动时,定时器能自动开始计时,在整个Web工程的生命期里,定时器能在每晚深夜触发一次报表计算引擎。因此定时器的存放位置也值得考查,不能简单的存在于单个Servlet或JavaBean中,必须能让定时器宿主的存活期为整个Web工程生命期,在工程启动时能自动加载运行。结合这两点,跟Servlet上下文有关的侦听器就最合适不过了,通过在工程的配置文件中加以合理配置,会在工程启动时自动运行,并在整个工程生命期中处于监听状态。
......下面就Servlet侦听器结合Java 定时器来讲述整个实现过程。要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,同时实现它的contextInitialized(ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数。考虑定时器有个建立和销毁的过程,看了前面两个接口函数,就不容置疑的把建立的过程置入 contextInitialized,把销毁的过程置入contextDestroyed了。
package com.derek.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import com.derek.pub.TimerManager;
/**
* 启动定时器的监听器
* @author derek
* @version 1.0
*/
public class TimerListener extends HttpServlet implements
ServletContextListener {
private TimerManager tm = null;
//Notification that the web module is ready to process requests
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);
}
//Notification that the servlet context is about to be shut down
public void contextDestroyed(ServletContextEvent sce) {
tm.destoryTimer();
}
}package com.derek.pub;
import java.util.Timer;
import java.util.Date;
import java.util.Calendar;
/**
* 定时器
* @author derek
* @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.derek.pub;
import java.util.TimerTask;
/**
* 计划任务代码
* @author derek
* @version 1.0
*/
public class MyTask extends TimerTask{
public MyTask() {
}
/**
* 任务块
*/
public void run() {
System.out.println("定时器RUN");
}
}
分享到:
相关推荐
【Java Timer定时器】 在Java中,`java.util.Timer` 类是用于调度任务的类,它可以在特定的时间点或者按照设定的周期执行某项任务。`Timer` 类提供了两种计划任务的方法:`schedule(TimerTask task, long delay)` ...
标题与描述均提到了“Java_Timer定时器实例_Spring实例”,这表明文章主要讨论的是如何在Java中使用Timer类创建定时任务,并将其整合到Spring框架中。以下是对该主题的详细解析: ### Java中的Timer定时器 #### ...
在这个基础的Quartz定时器案例中,我们将探讨如何使用Quartz API来创建、配置和执行定时任务。 首先,Quartz的核心组件包括Job(任务)、Trigger(触发器)和Scheduler(调度器)。Job是实际需要执行的任务,...
我们通常写的timer都是用main方法写的定时器,但同样我们也需要根据服务器启动后定时器也启动的 定时执行任务。不过有个致命伤就是集群方面跟quartz不能比,此方法代码做参考不错,如果要用,那么这个方法在一台...
综合来看,"spring定时器案例"是一个展示如何在Spring应用中配置和使用定时任务的实践项目。通过学习和分析这个案例,开发者可以掌握如何在自己的项目中实现定时任务,如执行数据清理、发送邮件通知或进行定期报告等...
Java 提供了强大的定时器类 `java.util.Timer` 来帮助开发者轻松实现这些功能。本文将通过一个简单且代码清晰的定时器示例来介绍如何使用 Java 的 `Timer` 类。 #### 定时器基础知识 在 Java 中,`java.util.Timer...
### 三、定时器2的应用案例 #### 3.1 实现1秒定时 通过调用`T2_set()`函数设置定时器2的计数值,然后进入循环等待直到定时结束。例如: ```c T2_set(1000); //设置定时器2计数1000次,即1秒 while (!T2_time()); //...
本案例聚焦于Java GUI程序的设计和组件的使用,我们将深入探讨以下几个方面: 1. **Java Swing库**:Java GUI的主要构建模块之一是Java Swing库,它是Java AWT(Abstract Window Toolkit)的扩展。Swing提供了更多...
这可以通过Java的定时器(Timer)和动画框架(如JavaFX的Timeline)来实现。 总之,"Java 学习案例,电子地图模块"是一个综合性的项目,涵盖了GUI设计、数据处理、GIS应用、网络编程、性能优化等多个方面,对于提升...
标题“120套java经典案例库.pdf”所指的知识点为Java编程领域中的经典示例集合。这些案例往往被设计为教学和实践的重要资源,旨在帮助开发者巩固和深化Java语言的理解。描述中提到“每个案例都进行了详细分析”,这...
在Spring 2.5.6版本中,定时任务主要基于`java.util.Timer`和`java.util.TimerTask`类,这是一个简单的定时器API,适合一些基本的定时需求。要使用Spring的定时器功能,首先需要配置一个`TimerTask`实现,然后在...
其次,游戏的运行基于时间驱动,Java的定时器(java.util.Timer)和定时任务(java.util.TimerTask)是实现这一机制的关键。通过设置定时器,我们可以控制蛇的移动速度,并定期更新游戏状态。 GUI界面是贪吃蛇游戏...
在这个“JAVA小程序案例”压缩包中,包含了一个MIDP俄罗斯方块游戏的设计与实现,以及一个汉诺塔自动演示的项目。这两个例子都是Java在游戏开发中的经典应用,它们可以帮助我们深入理解如何用Java来创建互动式的娱乐...
综上所述,“JAVA飞机大战”案例涵盖了Java基础、面向对象编程、GUI设计、事件处理、碰撞检测、动画实现、资源管理等多个核心知识点,对于提升Java编程能力和理解面向对象设计有极大的帮助。通过这个案例的学习,...
2. 应用级定时器:在应用程序中使用的定时器,如JavaScript的setTimeout和setInterval,Java的ScheduledExecutorService,C#的Timer类等。 二、定时器常见问题 1. 精度问题:定时器的触发时间可能与预期不同,这...
《Java十大经典案例》源代码是一份集合了Java编程语言的经典应用示例,旨在帮助学习者深入理解Java语言的核心特性和编程技巧。这份资源包含了多种类型的小游戏,如俄罗斯方块和五子棋,这些都是非常典型的面向对象...
对于初学者来说,通过实践各种案例来学习Java是至关重要的。本资料包包含了一系列的Java练习用案例源码,旨在帮助新手更好地理解和掌握Java编程。 1. **简单聊天程序** 这个案例展示了如何使用Java实现一个简单的...
要开始这个案例,首先需要在项目中引入Spring和Quartz的相关依赖。通常,这会在pom.xml文件中通过Maven进行配置,添加如下依赖: ```xml <groupId>org.springframework <artifactId>spring-context <version>5....
6. **动画**:Java可以使用定时器和帧率控制来创建平滑的动画效果。Swing库中的Timer类或者JavaFX的Animation API都能帮助实现这一目标。 7. **音频和多媒体**:Java Sound API提供了播放音频和处理多媒体文件的...
在这个案例中,我们可以通过以下步骤来实现一个简单的动态时钟: 1. **导入必要的库**: 首先,我们需要导入`javax.swing.*`库来构建GUI,以及`java.awt.*`和`java.util.Timer`库来处理定时任务和时间显示。 2. *...