LZ指的是定时任务吧
在java里面做定时任务通常是线程的
下面有个简单的定时任务(没验证是否好使 但基本是这个样子的)
在webxml里面增加一个监听
<listener>
<listener-class>CountListen</listener-class>
</listener>
具体代码如下
import javaxservletServletContextListener;
import javaxservletServletContextEvent;
import javautil;
public class CountListen
implements ServletContextListener {
private javautilTimer timer = null;
public void contextInitialized(ServletContextEvent event) {
timer = new javautilTimer(true);
eventgetServletContext()log("定时器已启动");
Systemoutprintln("定时器已启动");
Date date = new Date(1900,1,1,23,59);
timerschedule(new SampleTask(eventgetServletContext()),0,
24 60 60 1000);
eventgetServletContext()log("已经添加任务调度表");
Systemoutprintln("已经添加任务调度表");
}
public void contextDestroyed(ServletContextEvent event) {
timercancel();
eventgetServletContext()log("定时器销毁");
}
}
import javautil;
import javaxservletServletContext;
import comfoundergonganutilConfigPropertie;
import comfoundergonganmanageCountManager;
import comfounderbotongentityEnumFolder;
class SampleTask
extends TimerTask {
private static boolean isRunning = true;
private ServletContext context = null;
public SampleTask(ServletContext context) {
thiscontext = context;
}
public void run() {
if (isRunning) {
isRunning = false;
contextlog("开始执行指定任务");
Systemoutprintln("开始执行指定任务");
//指定的任务
isRunning = true;
contextlog("指定任务执行结束");
Systemoutprintln("指定任务执行结束");
}else {
contextlog("上一次任务执行还未结束");
}
}
}
二、如果是需要Tomcat启动就能执行,不需要main方法的定时器的话:
webxml里面需要这么配置:
<listener>
<listener-class>
comInitListener
</listener-class>
</listener>
第一个类:InitListener
package comlistener;
import javautilCalendar;
import javautilDate;
import javautilTimer;
import javaxservletServletContextEvent;
import javaxservletServletContextListener;
/
系统启动时的监听类 初始化系统数据
@author jhoneder
/
public class InitListener implements ServletContextListener {
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
// context销毁时,销毁初始化数据
}
public void contextInitialized(ServletContextEvent event) {
// TODO Auto-generated method stub
try {
goTimmer();
} catch (Exception e) {
Systemoutprintln("失败:" + egetMessage());
}
}
private void goTimer() {
Timer timmerTask = new Timer();
Calendar calEnviron = CalendargetInstance();
// 每天的02:00am开始执行
calEnvironset(CalendarHOUR_OF_DAY, 2);
calEnvironset(CalendarMINUTE, 00);
// date为制定时间
Date dateSetter = new Date();
dateSetter = calEnvirongetTime();
// nowDate为当前时间
Date nowDateSetter = new Date();
// 所得时间差为,距现在待触发时间的间隔
long intervalEnviron = dateSettergetTime() - nowDateSettergetTime();
if (intervalEnviron < 0) {
calEnvironadd(CalendarDAY_OF_MONTH, 1);
dateSetter = calEnvirongetTime();
intervalEnviron = dateSettergetTime() - nowDateSettergetTime();
}
// 每24小时执行一次
timmerTaskschedule(new UseTimer(timmerTask), intervalEnviron, 1 1000 60 60 24);
}
}
第二个类:
package comlistener;
import javautilTimer;
import javautilTimerTask;
/
被调用执行类
@author Administrator
/
public class UseTimer extends TimerTask {
Timer timer = new Timer();
public UseTimer(Timer timer) {
thistimer = timer;
}
/
被调用具体的方法
/
public void run() {
Systemoutprintln("开始具体执行!");
}
}
不懂得话可以追问!
以上就是关于java如何在每一天的凌晨00:00:00自动运行程序全部的内容,包括:java如何在每一天的凌晨00:00:00自动运行程序、java定时器 每天凌晨 固定执行一个方法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)