//这是我的定时器类,用来定时执行某段任务;
- package com.my.time;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Timer;
- public
class
BugXmlTimer { -
public
Timer timer; -
public
void
timerStart(){ - timer =
new
Timer(); - Date datetime=
new
Date(); - Date midnightDate=
new
Date(); - SimpleDateFormat sdf1 =
new
SimpleDateFormat(
"yyyy-MM-dd"
); - SimpleDateFormat sdf2 =
new
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
); -
try
{ - midnightDate = sdf2.parse(sdf1.format(datetime)+
" 23:00:00"
); - }
catch
(ParseException e) { -
// TODO Auto-generated catch block - e.printStackTrace();
- }
-
long
in
=midnightDate.getTime()-datetime.getTime(); - System.
out
.println(
"before task"
); - //立刻执行,然后每隔30s执行一次
- timer.schedule(
new
BugXmlTimerTask(), 0,30000); - }
-
public
void
timerStop(){ -
if
(timer!=
null
) - timer.cancel();
- }
-
public
static
void
main(String[] args){ - BugXmlTimer myTimer=
new
BugXmlTimer(); -
// TODO Auto-generated method stub - myTimer.timerStart();
- }
- }
//这是执行任务的类,即每隔一段时间要做的事情在这里
- package com.my.time;
- import java.util.TimerTask;
- public
class
BugXmlTimerTask extends TimerTask { - @Override
-
public
void
run() { - System.
out
.print(
"run task"
); - }
- }
//以下是出发定时操作的类,该类继承了ServletContextListener
- public
class
MyTimerListener implements ServletContextListener { -
private
BugXmlTimer mytimer =
new
BugXmlTimer (); -
public
void
contextInitialized(ServletContextEvent
event
) { - mytimer.timerStart();
- }
-
public
void
contextDestroyed(ServletContextEvent
event
) { - mytimer.timerStop();
- }
- }
然后在web.xml里部署一下,即可在程序启动后运行定时器了!
- <listener>
- <listener-
class
>com.my.time.MyTimerListener </listener-
class
> - </listener>