我要写一个线程,让他再每天的00:00:00 这个时间开始对服务器的数据库备份。
可是TIMER这个方法不太会用。
schedule(TimerTask task, Date firstTime, long period)
在我启动服务后,怎么设定Date firstTime 这个时间呀,获取一个时间后,判断他是否时00:00:00?? 谢谢高手们的帮助~~!
public class ScheduleListener implements ServletContextListener
{
private java.util.Timer timer = null;
public void contextInitialized(ServletContextEvent sce)
{
timer = new Timer(true);
Date dt = new Date();
System.out.println(dt.getTime());
sce.getServletContext().log(new java.util.Date() + "计时器已经启动... ");
System.out.println(new java.util.Date() + " 计时器已经启动... ");
timer.schedule(new MyTask() , 0 , 2*60*1000); //每4分钟执行一次
sce.getServletContext().log(new java.util.Date() + "计时器执行一次!!!!! ");
System.out.println(new java.util.Date() + " 计时器执行一次!!!!! ");
}
public void contextDestroyed(ServletContextEvent sce)
{
timer.cancel();
sce.getServletContext().log(new java.util.Date() + "计时器被销毁!!! ");
System.out.println(new java.util.Date() + " 计时器被销毁!!! ");
}
}
------解决方案--------------------
http://www.128kj.com/article/article5/6EA6E49C9C53F80FF7B059B755F9B801.htm?id=3298
------解决方案--------------------
> > > 让他再每天的00:00:00 这个时间开始对服务器的数据库备份。
> > > timer.schedule(new MyTask() , 0 , 2*60*1000); //每4分钟执行一次
为什么需要每44分钟执行一次呢?
如果希望每天零点执行,可以使用Quartz
------解决方案--------------------
是啊,推荐用Quartz
------解决方案--------------------
举个例子给你:
//每天3点执行
java.util.Date start_time = new java.util.Date(
new java.util.Date().getTime()+24*60*60*1000);
//取第二天的3点,因为有可能现在已经5点了
SimpleDateFormat sm = new SimpleDateFormat( "yyyyMMdd ");
String cur_date = sm.format(start_time)+ "030000 ";
sm = new SimpleDateFormat( "yyyyMMddHHmmss ");
start_time = sm.parse(cur_date);
timer.schedule(new SpDaily(),start_time, 24*60*60*1000);