- 浏览: 235909 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
王飞飞飞:
...
open Explorer eclipse plugin -
ZLHRoar:
very good!
open Explorer eclipse plugin -
skyline0813:
So cool!
open Explorer eclipse plugin -
skyline0813:
...
open Explorer eclipse plugin -
sdylag:
不错,很实用,谢谢分享。
open Explorer eclipse plugin
文章有些内容显示不全,请访问http://blog.csdn.net/simon_21/archive/2007/03/28/1544188.aspx 这个地址。
定时执行任务的三种方法:
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>
发表评论
-
ora-01000:超出打开游标的最大数
2012-01-16 17:23 1063最近在项目中用到了apac ... -
tomcat 移植到weblogic session 为null 问题
2011-07-14 12:14 1171tomcat weblogic session null ... -
开发人员必备的开发工具
2011-07-14 09:48 01、IDE(eclipse) eclipse 目前普遍流行的 ... -
java 中PermGen space解决方案
2011-06-20 10:25 1470PermGen space 的全称是 Permanent ... -
解决response返回字符串乱码问题
2010-11-18 15:06 3487今天下午发了几个小时时间,查找response返回到页面的js ... -
tomcat 405 Method Not Allowed post 错误
2010-11-17 11:50 9179Http请求状态: 状态代码 状态信息 含义 100 ... -
open Explorer eclipse plugin
2010-10-21 17:14 3865最近写了一个eclipse 小插件,支持最新的eclipse3 ... -
关于java.lang.OutOfMemoryError: nativeGetNewTLA
2009-12-31 22:54 5695参考http://www.blogjava.net/a ... -
关于jstl问题Static attribute must be a String literal
2009-12-15 16:59 3222关于jstl “Static attribute must b ... -
让Spring自动加载Hibernate Annotated Classes
2009-12-01 13:56 2334通常,spring整合Hibernate的SessionFac ... -
spring2.5org.xml.sax.SAXParseException: src-import.0:
2009-07-31 12:42 1886公司的以前的项目中要使用spring进行bean的管理,在 导 ... -
struts1 与spring集成方式
2009-07-28 15:35 0struts1与spring集成的方式 ... -
关于hibernate的缓存使用
2009-04-30 09:04 719转载至http://blog.csdn.net/woshi ... -
Hibernate性能优化
2009-04-30 08:57 1292在处理大数据量时,会 ... -
hibernate查询语言hql
2009-04-30 08:55 821在hql中关键字不区分大小写,但是属性和类名区分大小写 ... -
Unable to find a value ...using operator "."
2008-04-29 09:27 4359javax.servlet.jsp.el.ELExceptio ...
相关推荐
介绍了Java定时执行任务,给出了如何使用ServletContextListener实现定时运行java某个方法的例子,简单易用。
java定时执行的三种方法,应该对你有用!
java定时任务,每天定时执行任务,每天到这个时间点都会执行
java定时任务,每天定时执行任务.java定时任务,每天定时执行任务.
Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等
《定时执行专家》是一款制作精良、功能强大、简单易用、毫秒级精度、专业级的定时任务执行软件。软件具有 18 种【任务类型】、12 种【触发器】触发方式,并且全面支持界面化Cron表达式设置。软件采用多线程并发方式...
Timer schedule JAVA J2EE WEB 指定每一天某时某分执行某项任务的功能。 读取目录下配置文件的内容。 开发环境jdk1.5.0_22、MyEclipse6.5中文版。...定时任务管理器,定时执行,定时任务,run 绝对能用
资源介绍:。易语言定时执行任务可倒计时源码。时间到了指定时间,就执行某任务。资源作者:。@jxfa0086768。资源界面:。资源下载:。如上述代码有BUG,请查看下图修改。感谢@向前 提供BUG修复源码。
java 定时执行任务
基于thinkphp5框架的定时任务行为扩展
直接配置执行定时任务的一整套方法,插入数据库,然后读出任务,执行任务,不需要再配置了。 可以检测互斥任务
ThinkPHP实现定时执行任务的两种方法
spring几种定时执行任务方法 TimeTask Quartz
thinkPHP3.2.3使用Cron实现网站访问执行任务。
定时关机 定时执行任务 占用资源少 不用注册
linux下定时执行计划任务.txt linux下定时执行计划任务.txt linux下定时执行计划任务.txt linux下定时执行计划任务.txt
PHP定时执行任务方法.txt
linux定时执行任务脚本。。。。。。。。。。。。。。。。。。
WEB应用程序定时执行任务DEMO 1.在关闭网站的情况下也可以执行 2.建议在服务器中加入自启动项,即可达到重启也可执行 以下从两个实例来演示: 定时写日志 定时发邮件