- 浏览: 609091 次
- 性别:
- 来自: 北京
文章分类
最新评论
定时执行任务的三种方法:
1)java.util.Timer.
2)ServletContextListener.
3)org.springframework.scheduling.timer.ScheduledTimerTask
1)java.util.Timer
这个方法应该是最常用的,不过这个方法需要手工启动你的任务:
Timer timer=new Timer();
timer.schedule(new ListByDayTimerTask(),10000,86400000);
这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。
2)ServletContextListener
这个方法在web容器环境比较方便,这样,在web server启动后就可以自动运行该任务,不需要手工操作。
将ListByDayListener implements ServletContextListener接口,在contextInitialized方法中加入启动Timer的代码,在contextDestroyed方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:
<-listener>
<-listener-class>com.qq.customer.ListByDayListener</listener-class>
<-/listener>
3)org.springframework.scheduling.timer.ScheduledTimerTask如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer.xml中加入下面的内容就可以了:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local="MyTimeTask1"/>
</list>
</property>
</bean>
<bean id="MyTimeTask" class="com.qq.timer.ListByDayTimerTask"/>
<bean id="MyTimeTask1" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask">
<ref bean="MyTimeTask"/>
</property>
<property name="delay">
<value>10000</value>
</property>
<property name="period">
<value>86400000</value>
</property>
</bean>
</beans>
以上内容转载自:http://dev.csdn.net/author/xtpdcsse/ec8e8080a5b04fa79e7d4828bc807d3f.html
下面是我的实现。
1)利用java.util.Timer. 代码如下
<1>StartThread.java
<2>StatPlan.java
<3>StatWeekPlan .java
2)ServletContextListener.实现
<1> SysStatListener .java
<2> StatTask .java
<3>在web.xml中添加下面的内容(注:下面的内容放到<filter-mapping>的后面)
<listener>
<listener-class>com.jview.auto.stat.SysStatListener </listener-class>
</listener>
1)java.util.Timer.
2)ServletContextListener.
3)org.springframework.scheduling.timer.ScheduledTimerTask
1)java.util.Timer
这个方法应该是最常用的,不过这个方法需要手工启动你的任务:
Timer timer=new Timer();
timer.schedule(new ListByDayTimerTask(),10000,86400000);
这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。
2)ServletContextListener
这个方法在web容器环境比较方便,这样,在web server启动后就可以自动运行该任务,不需要手工操作。
将ListByDayListener implements ServletContextListener接口,在contextInitialized方法中加入启动Timer的代码,在contextDestroyed方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:
<-listener>
<-listener-class>com.qq.customer.ListByDayListener</listener-class>
<-/listener>
3)org.springframework.scheduling.timer.ScheduledTimerTask如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer.xml中加入下面的内容就可以了:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local="MyTimeTask1"/>
</list>
</property>
</bean>
<bean id="MyTimeTask" class="com.qq.timer.ListByDayTimerTask"/>
<bean id="MyTimeTask1" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask">
<ref bean="MyTimeTask"/>
</property>
<property name="delay">
<value>10000</value>
</property>
<property name="period">
<value>86400000</value>
</property>
</bean>
</beans>
以上内容转载自:http://dev.csdn.net/author/xtpdcsse/ec8e8080a5b04fa79e7d4828bc807d3f.html
下面是我的实现。
1)利用java.util.Timer. 代码如下
<1>StartThread.java
package com.jview.main; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import org.apache.log4j.Logger; public class StartThread extends Thread { private static Logger logger = Logger.getLogger("StartThread"); public static final int EXECUTE_CYC = 86400000; //24*60*60*1000毫秒 int startH = 9; int startM = 52; private Timer _timer ; private Date _statDate; private Date _nowDate; public StartThread(){ _nowDate = new Date(); _timer = new Timer(); _statDate = new Date(_nowDate.getYear(),_nowDate.getMonth(),_nowDate.getDate(),startH,startM); } public void StartUp(){ _timer.schedule( new TimerTask() { public void run() { logger.info("开始统计..."); try { Class.forName("com.jview.stat.StatPlan").newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } },_statDate,EXECUTE_CYC); } public static void main(String[] args) { StartThread _statUp = new StartThread(); _statUp.StartUp(); } }
<2>StatPlan.java
package com.jview.stat; import java.util.Calendar; import org.apache.log4j.Logger; public class StatPlan { private static Logger logger = Logger.getLogger("StatPlan"); private int i = 0; private StatPlanService _sps ; public StatPlan(){ _sps = new StatWeekPlan(); statPlan(); } public void statPlan(){ Calendar _c = Calendar.getInstance(); logger.info("stat plan ... 执行"+ i +"次,时间:"+_c.getTime()); _sps.StatPlan(); i++; for(int i = 0; i<9999;i++){ if(i==0 || i== 9998){ logger.info(""+i); } } } }
<3>StatWeekPlan .java
import org.apache.log4j.Logger; public class StatWeekPlan extends StatPlanService { private static Logger logger = Logger.getLogger("StatWeekPlan"); public void StatPlan(){ logger.info("this is statWeekPlan"); } } <4>StatPlanService .java public class StatPlanService { public void StatPlan(){ } }
2)ServletContextListener.实现
<1> SysStatListener .java
import java.util.Date; import java.util.Timer; import java.util.TimerTask; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.apache.log4j.Logger; public class SysStatListener implements ServletContextListener{ private static Logger logger = Logger.getLogger("ListByDayListener"); private StatTask _sTask; public void contextDestroyed(ServletContextEvent scevent) { String status = "停止系统统计线程"; scevent.getServletContext().log(status); logger.info(status); _sTask.shutDown(); } public void contextInitialized(ServletContextEvent scevent) { String status = "启动系统统计线程"; scevent.getServletContext().log(status); logger.info(status); _sTask = new StatTask(); _sTask.startUp(); } }
<2> StatTask .java
import java.util.Date; import java.util.Timer; import java.util.TimerTask; import org.apache.log4j.Logger; public class StatTask extends Thread { private static Logger logger = Logger.getLogger("StartThread"); public static final int EXECUTE_CYC = 86400000; int startH = 9; int startM = 52; private Timer _timer ; private Date _statDate; private Date _nowDate; public StatTask(){ _nowDate = new Date(); _timer = new Timer(); _statDate = new Date(_nowDate.getYear(),_nowDate.getMonth(),_nowDate.getDate(),startH,startM); } public void startUp(){ _timer.schedule( new TimerTask() { public void run() { logger.info("开始统计..."); try { Class.forName("com.jview.stat.StatPlan").newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } },_statDate,EXECUTE_CYC); } public void shutDown(){ _timer.cancel(); }
<3>在web.xml中添加下面的内容(注:下面的内容放到<filter-mapping>的后面)
<listener>
<listener-class>com.jview.auto.stat.SysStatListener </listener-class>
</listener>
发表评论
-
一个程序员的多年珍藏(1月23日最新更新)
2010-01-15 09:16 47085程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看 ... -
一个程序员的多年珍藏(python)
2010-01-14 12:07 17028程序员珍藏的东西会是什么?呵呵,除了平时写的代码,就是那些百看 ... -
网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
2010-01-05 08:31 46331、HTML静态化其实大家 ... -
Java基础学习笔记
2009-10-31 22:23 20161.Java语言的特点:面向对象,跨平台,多线程 2.Jav ... -
Java定时执行
2009-07-02 22:53 568import java.util.Timer; impo ... -
Java连接MQ
2009-07-02 17:05 780首先,创建一个mqconnect.properties文件,内 ... -
jdbc连接DB2 9.5方法
2009-07-01 11:05 462最近在写一个关于db2的sample application, ... -
13个代码注释的小技巧
2009-03-31 08:43 1872这篇文章是由José M. Agui ... -
log4j配置文件的含义
2009-03-10 13:37 3052今天试着用了一下log4j来处理java中的日志,感觉良好,顺 ... -
Java Regex(Java正则表达式)
2009-03-10 13:35 4190在Sun的API中对在对 “最大匹配Greedy”“最小匹配R ... -
学习正则表达式最佳的材料
2009-03-05 14:05 1653import java.util.regex.Matcher; ... -
Java snippets02
2009-02-06 14:43 1570if (Character.isLowerCase(ch ... -
Java snippets01
2009-02-06 13:28 1770for (int i = 0; i < number. ... -
双色球算号器
2009-02-06 12:29 9558我是个彩民,特别喜欢买双色球。最近看了几种算法,写了一个很简单 ... -
关于用Java I/O 复制文件的问题
2009-02-05 17:12 3081今天遇到了一个极其郁闷的问题,想写一段代码,可以给window ... -
Java util之常用数据类型特性盘点
2009-02-02 12:43 1275java.util就相当于c++的STL ... -
一些常用的正则表达式
2009-02-02 12:34 1255正则表达式是一种通用 ... -
编程经典问题
2009-01-21 16:43 4791【程序1】 题目:古典 ... -
Java中格式化输出数字
2009-01-20 12:15 6355在实际工作中,常常需要设定数字的输出格式,如以百分比的形式输出 ... -
右键运行jar文件的方法
2009-01-08 12:11 9138经常需要运行一些打成jar文件格式的Java程序,每次都需要切 ...
相关推荐
Java定时执行任务是Java开发中常见的一种需求,用于在特定时间执行特定的代码逻辑,例如数据备份、统计分析等。本文将详细介绍Java中三种常见的定时任务实现方式:`java.util.Timer`、`ServletContextListener`以及...
Java 定时任务,每天定时执行任务 Java 定时任务是指在 Java 语言中实现的定时执行任务的机制,通过使用 Timer 和 TimerTask 两个类,可以实现定时执行任务的功能。在这个例子中,我们将实现每天定时执行任务的功能...
本文将详细介绍在JSP环境下实现定时执行任务的三种方法:利用`java.util.Timer`类、通过`ServletContextListener`接口以及采用Spring框架中的`ScheduledTimerTask`。 ### 1. 使用`java.util.Timer` `java.util....
本篇文章将深入探讨如何在ThinkPHP5框架中实现定时执行任务,即“基于thinkphp5框架的定时执行任务”。 定时任务在Web应用中扮演着重要的角色,例如数据备份、清理缓存、发送邮件、统计分析等自动化任务,都可以...
// 在这里编写需要定时执行的代码 } } public class TimerManager { Timer timer = new Timer(); public void scheduleTask(MyTimerTask task, long delay, long period) { timer.schedule(task, delay, ...
当我们需要实现定时执行任务时,ThinkPHP框架同样提供了便利的支持。下面我们将详细探讨在ThinkPHP中实现定时任务的两种主要方法。 ### 1. 基于Crontab的定时任务 Crontab是Linux系统中用于设置周期性被执行任务的...
2. **编写任务逻辑**:创建一个Java类,定义需要定时执行的方法。这个方法可以执行插入数据库、数据处理、发送邮件等各种操作。 3. **任务调度**:Spring Boot的@Scheduled注解可以让你方便地定义任务执行的时间...
《定时执行专家》是一款制作精良、功能强大、简单易用、毫秒级精度、专业级的定时任务执行软件。软件具有 18 种【任务类型】、12 种【触发器】触发方式,并且全面支持界面化Cron表达式设置。软件采用多线程并发方式...
在"Quartz.net作业调度自定义定时执行任务多任务执行c#"这个主题中,我们将深入探讨如何使用Quartz.NET来实现自定义的定时任务,以及如何处理多任务执行。 首先,我们需要理解Quartz.NET的基本概念。在Quartz.NET中...
Java定时执行任务是Java开发中常见的一种需求,用于在特定时间点或按照预设周期执行某段代码。在Java中,有两种主要的方式来实现定时任务:Java.util.Timer类和java.util.concurrent包下的ScheduledExecutorService...
下面是一个简单的例子,创建一个名为`Task`的控制器,并在其中定义一个`run`方法来执行任务: ```php class TaskController extends Controller { public function run() { // 这里编写你的任务逻辑 $model = M...
资源介绍:。易语言定时执行任务可倒计时源码。时间到了指定时间,就执行某任务。资源作者:。@jxfa0086768。资源界面:。资源下载:。如上述代码有BUG,请查看下图修改。感谢@向前 提供BUG修复源码。
本篇将详细介绍如何在ThinkPHP中设置和使用定时器来定时执行任务。 一、定时任务的概念与作用 定时任务,也称为Cron Job,在服务器环境中常用于定期执行某些脚本或程序,以实现自动化工作流程。ThinkPHP中的定时...
Windows 自动定时执行任务的几种实现方法有使用 Windows 任务计划程序、使用 Windows Service 和使用 SQL Server Agent 的 Job 三种。每种方法都有其优缺,用户可以根据实际情况选择合适的方法来实现自动定时执行...
总结起来,Java提供了`Timer`和`ScheduledExecutorService`两种方式来实现定时执行任务。`Timer`适合简单的定时任务,而`ScheduledExecutorService`更适合复杂的需求,如多线程环境和高并发场景。选择哪种方式取决于...
软件具有 25 种【任务类型】、12 种【触发器】触发方式,并且全面支持界面化【Cron表达式】设置。软件采用多线程并发方式检测任务触发和任务执行,能够达到毫秒级的执行精度,可以同时支持200个以上任务的毫秒级触发...
在IT领域,定时执行任务是日常操作中非常实用的功能,尤其对于系统管理和自动化流程来说更是不可或缺。"最好的定时执行任务软件"通常指的是那些能够高效、可靠地按照预设时间执行各种任务的应用程序。这类软件可以...
在Python编程语言中,定时执行任务是一项常见的需求,例如自动备份数据、监控系统状态或运行数据分析等。Python提供了多种方式来实现定时任务,其中最常用的是使用`schedule`库和`APScheduler`库。本教程将围绕这两...
在Linux系统中,定时执行任务是一项非常常见的需求,例如定期备份数据、自动更新软件或执行监控任务等。要实现这个功能,我们可以利用Linux的cron服务,它是一个强大的定时任务调度器。本文将深入探讨如何创建和管理...