转自:
http://dev.yesky.com/355/3407855.shtml
在WEB应用下实现定时任务的简便方法
在web方式下,如果我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务:
第一步:创建一个任务管理类,实现ServletContextListener 接口
以下是引用片段:
public class TaskManager implements ServletContextListener {
/**
* 每天的毫秒数
*/
public static final long PERIOD_DAY = DateUtils.MILLIS_IN_DAY;
/**
* 一周内的毫秒数
*/
public static final long PERIOD_WEEK = PERIOD_DAY * 7;
/**
* 无延迟
*/
public static final long NO_DELAY = 0;
/**
* 定时器
*/
private Timer timer;
/**
* 在Web应用启动时初始化任务
*/
public void contextInitialized(ServletContextEvent event) {
//定义定时器
timer = new Timer("数据库表备份",true);
//启动备份任务,每月(4个星期)执行一次
timer.schedule(new BackUpTableTask(),NO_DELAY, PERIOD_WEEK * 4);
// timer.schedule(new BackUpTableTask(),NO_DELAY, 30000);
}
/**
* 在Web应用结束时停止任务
*/
public void contextDestroyed(ServletContextEvent event) {
timer.cancel(); // 定时器销毁
}
}
java 代码
以下是引用片段:
public class BackUpTableTask extends TimerTask {
private static Log log = LogFactory.getLog(BackUpTableTask.class);
private static boolean isRunning = false;
public void run() {
if (!isRunning) {
isRunning = true;
log.debug("开始执行任务..."); //开始任务
//working add what you want to do
log.debug("执行任务完成..."); //任务完成
isRunning = false;
} else {
log.debug("上一次任务执行还未结束..."); //上一次任务执行还未结束
}
}
}
第三步:在web中添加一个监听器
xml 代码
以下是引用片段:
<listener>
<listener-class>***.TaskManager</listener-class>
<description>要定期执行的任务</description>
</listener>
那么在web服务器启动的时候,任务也被启动,并且会周期性的执行
第二步:创建一个时间任务类
分享到:
相关推荐
### Java定时任务实现:每天定时执行任务 #### 一、概述 在Java开发中,定时任务是非常常见的一种需求。例如,需要定期清理数据库中的过期数据、定时发送邮件通知等场景。本文将详细介绍如何利用Java内置的`Timer`...
总结来说,Java实现定时任务有多种方法,其中在Web应用中使用监听器和`TimerTask`是一种常见的方式。这种方式易于理解和实现,但可能不适合复杂的定时需求。对于更复杂的需求,可以考虑使用`...
综上所述,这个"java web使用监听器实现定时周期性执行任务demo"提供了一个基础框架,通过Servlet监听器在Web应用启动时启动定时任务,周期性执行用户自定义的操作。开发者可以根据实际需求,在`Runnable`的`run`...
1. **配置Spring Task**:在Spring的配置文件(如`applicationContext.xml`或使用Java配置类)中,我们需要启用任务调度功能并配置相应的执行器或调度器。例如,使用Java配置可以这样写: ```java @Configuration @...
Java定时执行任务是Java开发中常见的一种需求,用于在特定时间执行特定的代码逻辑,例如数据备份、统计分析等。本文将详细介绍Java中三种常见的定时任务实现方式:`java.util.Timer`、`ServletContextListener`以及...
在本实例中,我们将探讨如何在Java Web环境中设置和执行定时任务,以及涉及到的相关技术和工具。 首先,Java Web定时任务通常通过Java的定时框架如Quartz或Spring的TaskScheduler来实现。Quartz是一个开源的作业...
二、定时执行任务 在Servlet中实现定时任务,我们可以使用Java的定时框架如`java.util.Timer`或`ScheduledExecutorService`(推荐)。以下是一个使用`ScheduledExecutorService`的例子: ```java import java.util....
// 在这里编写需要定时执行的代码 } } public class TimerManager { Timer timer = new Timer(); public void scheduleTask(MyTimerTask task, long delay, long period) { timer.schedule(task, delay, ...
`Timer`类提供了定时任务调度的功能,可以按照预设的时间间隔执行任务。在提供的代码示例中,创建了一个`SavaLog`类,其中的`savaLog`方法用于执行实际的业务逻辑。`TimerTask`是与`Timer`配合使用的任务类,需要...
通过上述内容,我们可以构建一个基于Quartz的Web应用定时任务系统,实现任务的自动执行。对于"Quartz_demo"这个压缩包文件,可能包含了示例代码、配置文件和说明文档,可以进一步帮助学习和实践Quartz在Web环境中的...
在Java编程中,定时执行任务是一项常见的需求,例如在服务器上定期执行数据备份、日志清理或自动同步等操作。本篇文章将详细讲解如何在Java环境中实现定时执行,并结合提供的文件`ReloadResourceListener.java`, `...
在Servlet容器(如Tomcat)中,可以通过监听器(Listener)或者Servlet的初始化方法来创建和启动定时器,以实现在Web应用启动后自动开始执行定时任务。 此外,Java 5引入了`java.util.concurrent`包,其中的`...
需要注意的是,在 TimerManager 类中,需要判断第一次执行定时任务的时间是否小于当前时间,如果小于当前时间,那么需要将第一次执行定时任务的时间加一天,以便在下一个时间点执行任务。如果不加一天,任务将立即...
在 Java Web 程序中加入定时任务是非常重要的,通常我们需要在特定的时间点执行某些任务,以实现自动化操作。这里介绍两种方法来实现定时任务:使用监听器注入和使用 Spring 注解 @Scheduled 注入。 一、使用监听器...
Spring的定时任务功能使得在Web项目中实现周期性任务变得轻松,无论是简单的定时执行还是复杂的调度需求,都有相应的解决方案。结合`@Scheduled`注解和`TaskScheduler`接口,开发者可以灵活地控制任务的执行时机和...
SpringBoot是一个开源的Java基础框架,...结合Mybatis和MySQL,可以在不重启应用的情况下调整定时任务的执行周期,以适应业务的变化需求。这种机制为复杂的后台任务调度提供了极大的便利,使得任务管理更加高效和可靠。
对于更复杂的定时需求,如需要在确切的日期时间点执行任务,可以使用 `schedule()` 的其他重载版本。这些版本允许指定具体的执行时间,而不是仅基于相对延迟。 方法签名如下: ```java public void schedule...
2. **Spring Scheduler**: 在Java Web应用中,Spring框架提供了`org.springframework.scheduling`模块,简化了定时任务的配置和管理。通过`@Scheduled`注解,可以直接在方法上声明一个定时任务,或者通过`Task...