设置监听类和定时任务
1 package com.liumai.timer; 2 3 import java.text.ParseException; 4 import java.util.Timer; 5 import java.util.TimerTask; 6 7 import javax.servlet.ServletContextEvent; 8 import javax.servlet.ServletContextListener; 9 10 import com.liumai.business.util.MctsUtils; 11 12 public class UpdateMemberDataTaskListener implements ServletContextListener 13 { 14 @Override 15 public void contextDestroyed(ServletContextEvent arg0)//timer销毁时执行 16 { 17 System.out.println("***************定时器销毁***************"); 18 } 19 20 @Override 21 public void contextInitialized(ServletContextEvent arg0)//在服务启动时执行 22 { 23 System.out.println("***************定时器启动***************"); 24 new TimerManager(); 25 } 26 } 27 28 class UpdateMemberDataTimerTask extends TimerTask 29 { 30 31 @Override 32 public void run()//定时操作要执行的方法 33 { 34 System.out.println("更新会员信息定时器测试:" + System.currentTimeMillis()); 35 } 36 } 37 38 class TimerManager 39 { 40 private static final long PERIOD_DATE = 24 * 60 * 60 * 1000;//一天执行一次 41 public TimerManager() 42 { 43 Timer timer = new Timer();//定时器实例化 44 UpdateMemberDataTimerTask task = new UpdateMemberDataTimerTask();//要执行的任务 45 //安排指定的任务在指定的时间,间隔指定的时间段执行任务 46 try 47 { 48 timer.schedule(task, MctsUtils.getStringDate(), PERIOD_DATE);//在0点执行 49 } catch (ParseException e) 50 { 51 e.printStackTrace(); 52 } 53 } 54 }
MctsUtils工具类中的方法:
1 public static Date getStringDate() throws ParseException 2 { 3 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); // 设置时间格式 4 String todayStringDate = sdf.format(new Date()) ;//获得今天时间的0点 (例如:2017-09-14 00:00:00) 5 Date date = sdf.parse(todayStringDate); 6 return date; 7 }
在web.xml中配置:
1 <!-- timer task listener --> 2 <listener> 3 <listener-class>com.liumai.timer.UpdateMemberDataTaskListener</listener-class> 4 </listener>
此定时器是用来测试的,在每天0点执行。
参考:http://blog.csdn.net/anmoyyh/article/details/71516325