實例講解java定時任務(wù)
今天為大家分享的一個經(jīng)驗就是java的定時任務(wù),就是說在一天的某個時間點執(zhí)行以下代碼。
public class TimerManager {
//時間間隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
public TimerManager() {
Calendar calendar = Calendar.getInstance();
/*** 定制每日2:00執(zhí)行方法 ***/
calendar.set(Calendar.HOUR_OF_DAY, 2);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date date=calendar.getTime(); //第一次執(zhí)行定時任務(wù)的時間
//如果第一次執(zhí)行定時任務(wù)的時間 小于 當(dāng)前的時間
//此時要在 第一次執(zhí)行定時任務(wù)的時間 加一天,以便此任務(wù)在下個時間點執(zhí)行。如果不加一天,任務(wù)會立即執(zhí)行。
if (date.before(new Date())) {
date = this.addDay(date, 1);
}
Timer timer = new Timer();
NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
//安排指定的任務(wù)在指定的時間開始進(jìn)行重復(fù)的固定延遲執(zhí)行。
timer.schedule(task,date,PERIOD_DAY);
}
// 增加或減少天數(shù)
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}
}
在TimerManager 這個類里面,大家一定要注意時間點的問題。如果你設(shè)定在凌晨2點執(zhí)行任務(wù)。但你是在2點以后發(fā)布的程序或是重啟過服務(wù),那這樣的情況下,任務(wù)會立即執(zhí)行,而不是等到第二天的凌晨2點執(zhí)行。為了,避免這種情況發(fā)生,只能判斷一下,如果發(fā)布或重啟服務(wù)的時間晚于定時執(zhí)行任務(wù)的時間,就在此基礎(chǔ)上加一天。
public class NFDFlightDataTimerTask extends TimerTask {
private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);
@Override
public void run() {
try {
//在這里寫你要執(zhí)行的內(nèi)容
} catch (Exception e) {
log.info("-------------解析信息發(fā)生異常--------------");
}
}
}
public class NFDFlightDataTaskListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
new TimerManager();
}
public void contextDestroyed(ServletContextEvent event) {
}
}
然后要在web.xml里面配置監(jiān)聽器
<listener> <listener-class> com.listener.NFDFlightDataTaskListener </listener-class> </listener>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
SpringBoot整合Mybatis注解開發(fā)的實現(xiàn)代碼
這篇文章主要介紹了SpringBoot整合Mybatis注解開發(fā)的實現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
nacos配置中心遠(yuǎn)程調(diào)用讀取不到配置文件的解決
這篇文章主要介紹了nacos配置中心遠(yuǎn)程調(diào)用讀取不到配置文件的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。2022-01-01
關(guān)于IDEA關(guān)聯(lián)數(shù)據(jù)庫的問題
這篇文章主要介紹了IDEA關(guān)聯(lián)數(shù)據(jù)庫的相關(guān)知識,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
RocketMQ消息生產(chǎn)者是如何選擇Broker示例詳解
這篇文章主要為大家介紹了RocketMQ消息生產(chǎn)者是如何選擇Broker示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Springboot整合分頁插件PageHelper步驟解析
這篇文章主要介紹了Springboot整合分頁插件PageHelper步驟解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
使用jpa的實體對象轉(zhuǎn)json符串時懶加載的問題及解決
這篇文章主要介紹了使用jpa的實體對象轉(zhuǎn)json符串時懶加載的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
Java實現(xiàn)ftp上傳下載、刪除文件及在ftp服務(wù)器上傳文件夾的方法
這篇文章主要介紹了Java實現(xiàn)ftp上傳下載、刪除文件及在ftp服務(wù)器上傳文件夾的方法,需要的朋友可以參考下2015-11-11

