01 |
public class TimerManager
{ |
02 |
03 |
//時間間隔 |
04 |
private static final long PERIOD_DAY
= 24 * 60 * 60 * 1000 ; |
05 |
|
06 |
public TimerManager()
{ |
07 |
Calendar
calendar = Calendar.getInstance(); |
08 |
|
09 |
/***
定製每日2:00執行方法 ***/ |
10 |
11 |
calendar.set(Calendar.HOUR_OF_DAY, 2 ); |
12 |
calendar.set(Calendar.MINUTE, 0 ); |
13 |
calendar.set(Calendar.SECOND, 0 ); |
14 |
|
15 |
Date
date=calendar.getTime(); //第一次執行定時任務的時間 |
16 |
|
17 |
//如果第一次執行定時任務的時間
小於 當前的時間 |
18 |
//此時要在
第一次執行定時任務的時間 加一天,以便此任務在下個時間點執行。如果不加一天,任務會立即執行。 |
19 |
if (date.before( new Date()))
{ |
20 |
date
= this .addDay(date, 1 ); |
21 |
} |
22 |
|
23 |
Timer
timer = new Timer(); |
24 |
|
25 |
NFDFlightDataTimerTask
task = new NFDFlightDataTimerTask(); |
26 |
//安排指定的任務在指定的時間開始進行重複的固定延遲執行。 |
27 |
timer.schedule(task,date,PERIOD_DAY); |
28 |
} |
29 |
30 |
//
增加或減少天數 |
31 |
public Date
addDay(Date date, int num)
{ |
32 |
Calendar
startDT = Calendar.getInstance(); |
33 |
startDT.setTime(date); |
34 |
startDT.add(Calendar.DAY_OF_MONTH,
num); |
35 |
return startDT.getTime(); |
36 |
} |
37 |
|
38 |
} |
在 TimerManager 這個類裏面,大家一定要注意 時間點的問題。如果你設定在凌晨2點執行任務。但你是在2點以後
發佈的程序或是重啓過服務,那這樣的情況下,任務會立即執行,而不是等到第二天的凌晨2點執行。爲了,避免這種情況
發生,只能判斷一下,如果發佈或重啓服務的時間晚於定時執行任務的時間,就在此基礎上加一天。
01 |
public class NFDFlightDataTimerTask extends TimerTask
{ |
02 |
03 |
private static Logger
log = Logger.getLogger(NFDFlightDataTimerTask. class ); |
04 |
05 |
@Override |
06 |
public void run()
{ |
07 |
try { |
08 |
//在這裏寫你要執行的內容 |
09 |
|
10 |
} catch (Exception
e) { |
11 |
log.info( "-------------解析信息發生異常--------------" ); |
12 |
} |
13 |
} |
14 |
} |
15 |
16 |
public class NFDFlightDataTaskListener implements ServletContextListener
{ |
17 |
|
18 |
public void contextInitialized(ServletContextEvent
event) { |
19 |
new TimerManager(); |
20 |
} |
21 |
22 |
public void contextDestroyed(ServletContextEvent
event) { |
23 |
} |
24 |
25 |
} |
然後要在web.xml裏面配置監聽器
1 |
< listener > |
2 |
< listener-class > |
3 |
com.listener.NFDFlightDataTaskListener |
4 |
</ listener-class > |
5 |
</ listener > |