java如何在每一天的凌晨00:00:00自动运行程序

java如何在每一天的凌晨00:00:00自动运行程序,第1张

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定时器 每天凌晨 固定执行一个方法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9492243.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存