導航:首頁 > 編程語言 > 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

友情鏈接