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(); // 定时器销毁
}
}
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("上一次任务执行还未结束..."); //上一次任务执行还未结束
}
}
}
<listener>
<listener-class>***.TaskManager</listener-class>
<description>要定期执行的任务</description>
</listener>
分享到:
相关推荐
总结来说,Java实现定时任务有多种方法,其中在Web应用中使用监听器和`TimerTask`是一种常见的方式。这种方式易于理解和实现,但可能不适合复杂的定时需求。对于更复杂的需求,可以考虑使用`...
综上所述,Spring提供的定时任务功能使得开发者能够轻松地在非Web项目中实现复杂的时间驱动逻辑,无论是简单的定时执行还是基于Cron表达式的复杂调度,Spring都能提供强大的支持。通过合理配置和编程,我们可以创建...
本文将详细介绍两种常用的Java定时任务实现方式:Timer类和Spring框架的Quartz调度器。 首先,第一种方式是使用Java内置的`Timer`类。`Timer`类提供了定时任务调度的功能,可以按照预设的时间间隔执行任务。在提供...
Java Web定时任务是Web应用程序中实现周期性操作的关键技术,例如数据备份、清理过期记录、发送邮件通知等。在本实例中,我们将探讨如何在Java Web环境中设置和执行定时任务,以及涉及到的相关技术和工具。 首先,...
### Java定时任务实现:每天定时执行任务 #### 一、概述 在Java开发中,定时任务是非常常见的一种需求。例如,需要定期清理数据库中的过期数据、定时发送邮件通知等场景。本文将详细介绍如何利用Java内置的`Timer`...
Java实现Web应用中的定时任务 Java实现Web应用中的定时任务是一个非常重要的功能,在当前WEB应用中,多数应用都具备任务调度功能。该功能可以指定一个未来的时间范围执行一定任务,例如驱动处理工作流程、系统维护...
在Web应用环境中,`ServletContextListener`是一个非常实用的定时任务实现方式。它是一个接口,实现了该接口的类可以在Web服务器启动和关闭时自动调用相应的方法。在`contextInitialized`方法中初始化定时任务,而...
在示例中,`DailyDataTaskListener`实现了`ServletContextListener`接口,`contextInitialized`方法会在Web应用启动时被调用,从而触发`TimerManager`的初始化,进而启动定时任务。 ```java public class ...
Quartz 是一个开源的作业调度框架,常用于Java应用程序中实现定时任务的管理。它提供了丰富的API和功能,使得开发者可以灵活地定义和控制任务的执行。本篇将重点介绍如何在Web环境中集成并使用Quartz,以及相关的...
它提供了基于`@Scheduled`注解和`TaskScheduler`接口的两种定时任务实现方式。`@Scheduled`适用于简单的定时任务,而`TaskScheduler`则更灵活,可以用于复杂的调度需求。 二、@Scheduled注解使用 1. 配置启用定时...
本文将探讨如何使用Quartz库结合Struts Action框架在Java Web应用中实现任务调度。 首先,我们需要理解为什么任务调度是必要的。在传统的Web应用中,多数操作都是即时响应的,以避免用户长时间等待。但在某些情况下...
- `java.util.TimerTask`:继承自Runnable接口,是定时任务的具体实现类,需要覆盖`run()`方法来定义要执行的任务。 2. **ScheduledExecutorService** - `java.concurrent.ScheduledExecutorService`是Java并发包...
总结来说,这个"Spring3.0定时任务简单实例web工程"提供了一个使用Spring 3.0实现定时任务的实例,通过配置`TaskScheduler`,定义任务类,使用`@Scheduled`注解设置执行计划,最后在Web应用启动时启动任务,可以方便...
3. **`java.util.Timer`和`TimerTask`**:这是Java标准库提供的简单定时任务实现。创建一个`TimerTask`实例,定义任务逻辑,然后通过`Timer`类的`schedule`方法设定执行时间。但这个类不适用于复杂或并发任务,因为...
总的来说,`Timer`和`TimerTask`是Java中实现定时任务的基本工具,它们简单易用,但在多线程环境下需要注意其线程安全性。通过深入理解这些知识点,开发者可以灵活地在项目中实现各种定时需求。不过,对于复杂的定时...
在Java Web开发中,Tomcat是一个非常流行的开源应用服务器,它用于部署和运行Servlet和JSP应用程序。有时候,我们可能需要在特定的时间执行一些后台任务,例如数据清理、日志归档或者发送邮件等,这时候就需要用到...
Java工具:Elastic-job是一个强大的分布式任务调度框架,它提供了简单易用的API,使得开发者可以轻松地在Java环境中实现定时任务。Elastic-job由两个核心模块组成:Elastic-job-Lite和Elastic-job-Cloud,前者适用于...
SpringBoot是一个开源的Java基础框架,...结合Mybatis和MySQL,可以在不重启应用的情况下调整定时任务的执行周期,以适应业务的变化需求。这种机制为复杂的后台任务调度提供了极大的便利,使得任务管理更加高效和可靠。
1. ServletContextListener:创建一个实现了ServletContextListener接口的类,重写contextInitialized方法,在Web应用启动时初始化定时任务。 2. Filter:利用Filter,可以在每次请求前或后执行定时任务,但这可能会...