导航:首页 > 编程语言 > java定时器每天凌晨执行一次

java定时器每天凌晨执行一次

发布时间:2025-03-22 20:05:15

① 在java中如何设置一个定时任务,在每天的一个时间点自动执行一个特定的程序具体代码怎么写代码全点

Quartz定时机制
首先导入jar包到程序内 quartz-all-1.6.0.jar

然后创建一个XML
TimeConfig.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="mainTask" class="net.timed.MainTask"/> //你要执行的任务类
//jar类
<bean id="mainJob" class="org.springframework.scheling.quartz.">
<property name="targetObject">
<ref bean="mainTask"/>//将你的类添加到定时器当中
</property>
<property name="targetMethod">
<value>execute</value> //定时执行类里面的哪个方法
</property>
</bean>

<bean id="timeTrigger" class="org.springframework.scheling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="mainJob"/>
</property>
<!--
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发

上面这个是quartz的语法 定时单位
-->
<property name="cronExpression">
<value>0 0/5 * * * ?</value> //定时的语法
</property>
</bean>
<bean id="sfb" class="org.springframework.scheling.quartz.SchelerFactoryBean">
<property name="triggers">
<list>
<ref local="timeTrigger"/>
</list>
</property>
</bean>
</beans>

//下面这个类就是我在XML中引入的类
package net.timed;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainTask {
public void execute() throws IOException
{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("do my job"+dateFormat.format(new Date()));
Runtime.getRuntime().exec("cmd /c start E:/mbl/BusinessOffice/MoneDB/bin/bakup.bat");
}
}

然后在web.xml中把这个TimeConfig.xml添加进去作为监听
系统启动的时候自动就监听这个事件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
/WEB-INF/TimerConfig.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

这个是quartz spring的定时机制 请仔细的看看 如果可以请给分哦

② java定时任务的定时表达式,每天早晨6:30执行任务,还有一个是每个月的1号和15号执行任务

public class TestTimerTask extends TimerTask{
public void run() {
Calendar cal = Calendar.getInstance();
//每月5号执行

if(cal.get(Calendar.DATE) == 5){
try {
//需要执行的代码
} catch (Exception e) {
//logger.error(e);
e.printStackTrace();
}
System.gc();
//......
}
//周日执行

if(cal.get(Calendar.DAY_OF_WEEK) == 1){
try {
//需要执行的代码

} catch (Exception e) {
// logger.error(e);
e.printStackTrace();
}
System.gc();
}
}
}
public class Test{
public static void main (String[] ages){
Timer timer = new Timer();//定时器
TestTimerTask ts = newTestTimerTask();//定时任务目标
Date firstTime = new Date();//第一次执行时间
long period = 1000 * 60 * 60 * 24;//执行间隔1天
timer.scheleAtFixedRate(ts, firstTime, period);//设置执行参数并且开始定时任务
}

}

③ java定时器每天晚上23:00开始刷新数据怎么写

publicstaticvoidtimer4(){
Calendarcalendar=Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,23);//控制时
calendar.set(Calendar.MINUTE,0);//控制分
calendar.set(Calendar.SECOND,0);//控制秒

Datetime=calendar.getTime();//得出执行任务的时间,此处为今天的23:00:00

Timertimer=newTimer();
timer.scheleAtFixedRate(newTimerTask(){
publicvoidrun(){
System.out.println("-------设定要指定任务--------");
}
},time,1000*60*60*24);//这里设定将延时每天固定执行
}

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

LZ指的是定时任务吧
在java里面做定时任务通常是线程的
下面有个简单的定时任务(没验证是否好使 但基本是这个样子的)
在web.xml里面增加一个监听
<listener>
<listener-class>CountListen</listener-class>
</listener>
具体代码如下
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
import java.util.*;

public class CountListen
implements ServletContextListener {
private java.util.Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
timer = new java.util.Timer(true);
event.getServletContext().log("定时器已启动");
System.out.println("定时器已启动");
Date date = new Date(1900,1,1,23,59);
timer.schele(new SampleTask(event.getServletContext()),0,
24 * 60 * 60 * 1000);
event.getServletContext().log("已经添加任务调度表");
System.out.println("已经添加任务调度表");
}

public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
event.getServletContext().log("定时器销毁");
}
}

import java.util.*;
import javax.servlet.ServletContext;
import com.founder.gongan.util.ConfigPropertie;
import com.founder.gongan.manage.CountManager;
import com.founder.botong.entity.EnumFolder;

class SampleTask
extends TimerTask {
private static boolean isRunning = true;
private ServletContext context = null;
public SampleTask(ServletContext context) {
this.context = context;
}

public void run() {
if (isRunning) {
isRunning = false;
context.log("开始执行指定任务");
System.out.println("开始执行指定任务");
//指定的任务......
isRunning = true;
context.log("指定任务执行结束");
System.out.println("指定任务执行结束");
}else {
context.log("上一次任务执行还未结束");
}
}

}

⑤ 如何配置Spring定时器准确运行时间,例如我想它在每天半夜12点运行一次

Spring quartz的配置:
表达式意义
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
每天早上6点

0 6 * * *

每两个小时

0 */2 * * *
晚上11点到早上8点之间每两个小时,早上八点

0 23-7/2,8 * * *

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3
1月1日早上4点

0 4 1 1 *

希望对你有帮助!

⑥ 如何让java程序每天执行一次

写一个定时器

importjava.util.Timer;
importjava.util.TimerTask;

publicclassM{
publicstaticvoidmain(String[]args){
//TODOtodo.generatedbyzoer
Timertimer=newTimer();
//newMyTask()里可以写定时执行的方法1000是1s后开始执行2000是每两秒执行一次
timer.schele(newMyTask(),1000,2000);
}
}

classMyTaskextendsTimerTask{

@Override
publicvoidrun(){
System.out.println("需要定时执行的程序");

}

}

⑦ JAVA单机版程序,如何指定在每天凌晨0:00:00执行

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class HandleTimerTask implements ServletContextListener {

private Timer timer = null; //定时器
private static int DOWNlOAD_HOUR = 0; //执行任务开始时间(时)
private static int DOWNlOAD_MINUTE = 0; //执行任务开始时间(分)
private static int DOWNlOAD_SECOND = 0; //执行任务开始时间(秒)
private long delay; //延时时间值(当前系统时间到下载时间之间的时间差毫秒数)

public void contextInitialized(ServletContextEvent event) {
init();//初始化参数
timer = new Timer(true);//创建Timer对象
//定时执行程序
timer.schele(new Handle(event.getServletContext()),delay,24*60*60*1000);//调用Handle()类(即每天要执行的任务),delay表示延迟毫秒数,0,24*60*60*1000表示每隔一天执行一次任务,60*60*1000表示一个小时;
}

public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
}

/**
* 初始化参数
* @return
*/
public void init(){
//声明一个Calendar对象
Calendar cal = Calendar.getInstance();
//设置时间
cal.set(Calendar.HOUR_OF_DAY, DOWNlOAD_HOUR);
cal.set(Calendar.MINUTE, DOWNlOAD_MINUTE);
cal.set(Calendar.SECOND, DOWNlOAD_SECOND);
Date date = new Date();
//获取设定的时间
date = cal.getTime();
//声明当前时间
Date now = new Date();
//获取设定的时间和当前的时间差(毫秒数)
long interval = date.getTime() - now.getTime();
//如果当前时间大于下载时间,则将下载时间设置为下一个下载时间
if (interval < 0) {
cal.add(Calendar.DAY_OF_MONTH, 1);//将天数加1
date = cal.getTime();
//获取设定的时间和当前的时间差(毫秒数)
interval = date.getTime() - now.getTime();
}
this.startTime = date;//初始化开始下载时间
this.delay = interval;//初始化当前时间到下载时间之间的时间差
}
}

public class Handle extends TimerTask {

private ServletContext context = null;
Timer timer = null; //查询任务定时器

public Handle(ServletContext context)
{
this.context = context;
}

/**
* 开始执行
*/
public void run() {
//开始执行
context.log("开始执行!");
}
}

用延迟时间可以实现,添加了一个init()方法用来计算延时数,不管什么时候启动服务,都可以根据当前系统时间和执行任务的开始时间计算出延时时间毫秒数。

虽然没有分,还是希望能帮助你。 ^_^

⑧ java定时器 每天凌晨 固定执行一个方法

可以通过以下方式实现,

public class TimerManager {
//时间间隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
public TimerManager() {
Calendar calendar = Calendar.getInstance();
/*** 定制每日:00执行方法 ***/
calendar.set(Calendar.HOUR_OF_DAY, 2);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

Date date=calendar.getTime(); //第一次执行定时任务的时间

//如果第一次执行定时任务的时间 小于 当前的时间
//此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
if (date.before(new Date())) {
date = this.addDay(date, 1);
}

Timer timer = new Timer();

NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
//安排指定的任务在指定的时间开始进行重复的固定延迟执行。
timer.schele(task,date,PERIOD_DAY);
}

// 增加或减少天数
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}

}

public class NFDFlightDataTimerTask extends TimerTask {

private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);

@Override
public void run() {
try {
//在这里写你要执行的内容

} catch (Exception e) {
log.info("-------------解析信息发生异常--------------");
}
}
}

public class NFDFlightDataTaskListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
new TimerManager();
}
public void contextDestroyed(ServletContextEvent event) {
}

}

然后要在web.xml里面配置监听器
<listener>
<listener-class>
com.listener.NFDFlightDataTaskListener
</listener-class>
</listener>

阅读全文

与java定时器每天凌晨执行一次相关的资料

热点内容
还有哪些能访问的英文网站 浏览:487
定时任务命令行和配置文件的区别 浏览:347
win7ghost哪个版本好 浏览:794
win10通过ip共享打印机 浏览:183
仓储管理系统的数据如何保存 浏览:821
ch340win10 浏览:32
cnc编程与三次元编程哪个好学 浏览:178
苹果银联安全码借记卡 浏览:235
做零件编程用什么软件好 浏览:600
excel两份文件如何对碰 浏览:846
如何在淘宝app搜索淘宝掌柜 浏览:793
哪些地方适合做数据挖掘 浏览:875
数据收集中变量可以分为什么 浏览:122
iphone4s电信版怎么移动卡 浏览:367
ipad开机密码查询 浏览:149
dnf90版本什么人偶好用 浏览:299
jsp设置session的值 浏览:323
如何提取文件中的签名文件 浏览:517
手机便签怎么打印文件夹 浏览:358
电脑端怎么看橱窗销售数据 浏览:944

友情链接