new Timer().schedule(TimerTask.子类,延迟时间,24*60*60*1000) 延迟时间= Date date=new Date(); Calendar c=Calendar.getInstance(); c.setTime(date); long lbegin=c.getTimeInMillis(); int i=c.get(Calendar.DATE)>3?c.get(Calendar.DATE)+1:c.get(Calendar.DATE); c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), i, 3, 30, 0); long l=c.getTimeInMillis()-lbegin; TimerTask.子类 public void run(){deal};
private java.util.Timer timer = null; public void contextInitialized(ServletContextEvent event) { timer = new java.util.Timer(true); event.getServletContext().log("定时器已启动"); timer.schedule(new MyTask(), 0, 60*60*1000); event.getServletContext().log("已经添加任务调度表"); Date date=new Date(); Calendar c=Calendar.getInstance(); c.setTime(date); long lbegin=c.getTimeInMillis(); int i=c.get(Calendar.DATE)>3?c.get(Calendar.DATE)+1:c.get(Calendar.DATE); c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), i, 3, 30, 0); long l=c.getTimeInMillis()-lbegin; 这一段代码怎么用? } public void contextDestroyed(ServletContextEvent event) { // TODO Auto-generated method stub timer.cancel(); event.getServletContext().log("定时器销毁"); } } ========================================================= package com.difu.xxrlmis.xjglxt.timer;import java.util.Date; import java.util.TimerTask;public class MyTask extends TimerTask { @Override public void run() { // TODO Auto-generated method stub // TODO 此处添加具体任务代码 }}
Date date=new Date(); Calendar c=Calendar.getInstance(); c.setTime(date); long lbegin=c.getTimeInMillis(); int i=c.get(Calendar.DATE)>3?c.get(Calendar.DATE)+1:c.get(Calendar.DATE); c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), i, 3, 30, 0); long l=c.getTimeInMillis()-lbegin; timer.schedule(new MyTask(), l, 60*60*1000);
public void contextInitialized(ServletContextEvent event) { timer = new java.util.Timer(true); event.getServletContext().log("定时器已启动"); Date date = new Date(); Calendar c = Calendar.getInstance(); c.setTime(date); long lbegin = c.getTimeInMillis(); int i = c.get(Calendar.DATE); c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), i, 3, 30, 0); long l = c.getTimeInMillis() - lbegin; timer.schedule(new MyTask(), l, 24 * 60 * 60 * 1000); event.getServletContext().log("已经添加任务调度表"); } 我这为啥不是每天执行一次,而是隔一天执行一次?
楼主【liyanqing_01】截止到2008-07-25 10:28:45的历史汇总数据(不包括此帖):
发帖的总数量:9 发帖的总分数:160 每贴平均分数:17
回帖的总数量:8 得分贴总数量:1 回帖的得分率:12%
结贴的总数量:4 结贴的总分数:70
无满意结贴数:0 无满意结贴分:0
未结的帖子数:5 未结的总分数:90
结贴的百分比:44.44 % 结分的百分比:43.75 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
楼主该结一些帖子了
Date date=new Date();
Calendar c=Calendar.getInstance();
c.setTime(date);
long lbegin=c.getTimeInMillis();
int i=c.get(Calendar.DATE)>3?c.get(Calendar.DATE)+1:c.get(Calendar.DATE);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), i, 3, 30, 0);
long l=c.getTimeInMillis()-lbegin;
TimerTask.子类 public void run(){deal};
import java.util.Date;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpServlet;public class ContextListener extends HttpServlet implements ServletContextListener { public ContextListener() {
}
private java.util.Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
timer = new java.util.Timer(true);
event.getServletContext().log("定时器已启动");
timer.schedule(new MyTask(), 0, 60*60*1000);
event.getServletContext().log("已经添加任务调度表");
Date date=new Date();
Calendar c=Calendar.getInstance();
c.setTime(date);
long lbegin=c.getTimeInMillis();
int i=c.get(Calendar.DATE)>3?c.get(Calendar.DATE)+1:c.get(Calendar.DATE);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), i, 3, 30, 0);
long l=c.getTimeInMillis()-lbegin;
这一段代码怎么用?
}
public void contextDestroyed(ServletContextEvent event) {
// TODO Auto-generated method stub
timer.cancel();
event.getServletContext().log("定时器销毁");
}
}
=========================================================
package com.difu.xxrlmis.xjglxt.timer;import java.util.Date;
import java.util.TimerTask;public class MyTask extends TimerTask { @Override
public void run() {
// TODO Auto-generated method stub
// TODO 此处添加具体任务代码
}}
Date date=new Date();
Calendar c=Calendar.getInstance();
c.setTime(date);
long lbegin=c.getTimeInMillis();
int i=c.get(Calendar.DATE)>3?c.get(Calendar.DATE)+1:c.get(Calendar.DATE);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), i, 3, 30, 0);
long l=c.getTimeInMillis()-lbegin;
timer.schedule(new MyTask(), l, 60*60*1000);
如果结合spring 使用更方便 具体如下:
<bean id="A" class="com.XXX" /> 配置bean <bean id="ExecuteJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="A" /> A:代表执行定时操作的bean如上面的配置
</property>
<property name="targetMethod">
<value>B</value> B:代表需要执行操作的具体方法(不能有参数)
</property>
</bean>
<bean id="ExecuteCronTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="ExecuteJobDetail" />
</property>
<property name="cronExpression">
<value>0 30 3 * * ?</value> // 每天晚上3点30
</property>
</bean>然后把上面一段配置放在spring的配置文件中 就可以使用了相对方便
timer = new java.util.Timer(true);
event.getServletContext().log("定时器已启动");
Date date = new Date();
Calendar c = Calendar.getInstance();
c.setTime(date);
long lbegin = c.getTimeInMillis();
int i = c.get(Calendar.DATE);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), i, 3, 30, 0);
long l = c.getTimeInMillis() - lbegin;
timer.schedule(new MyTask(), l, 24 * 60 * 60 * 1000);
event.getServletContext().log("已经添加任务调度表");
}
我这为啥不是每天执行一次,而是隔一天执行一次?
楼上的事件是2天一次,24*60*1000是一天的
这不就是表示一天吗?
一天24个小时不就是24 * 60 * 60 * 1000?