java listener实现定时任务
使用java ServletContextListener 实现各种简单定时任务。
1. 创建ServletContextListener,在3.0版本的web.xml中不再需要添加listener的声明。
1 package com.test.listener; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6 import java.util.Timer; 7 8 import javax.servlet.ServletContextEvent; 9 import javax.servlet.ServletContextListener; 10 import javax.servlet.annotation.WebListener; 11 12 import com.test.job.timerJobTest; 13 import com.test.job.timerJobTest2; 14 @WebListener("This is my servlet3.0 listener") 15 public class MyServletContextListener implements ServletContextListener { 16 private Timer timer= null; 17 private Timer timer2= null; 18 @Override 19 public void contextDestroyed(ServletContextEvent arg0) { 20 // TODO Auto-generated method stub 21 System.out.println("servletContext被销毁"); 22 } 23 24 @Override 25 public void contextInitialized(ServletContextEvent arg0) { 26 // TODO Auto-generated method stub 27 System.out.println("servletContext 初始化"); 28 timer= new Timer(true);//创建一个守护线程 29 timer2= new Timer(true); 30 timerJobTest tjb = new timerJobTest(); //创建要随容器启动的定时任务1 31 timerJobTest2 tjb2= new timerJobTest2();//创建要随容器启动的定时任务2 32 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 33 Date d1=null; 34 try { 35 d1 = sdf.parse("2016-08-01 21:28:10"); 36 } catch (ParseException e) { 37 // TODO Auto-generated catch block 38 e.printStackTrace(); 39 } 40 timer.schedule(tjb, d1);//任务1是指定时间执行 41 timer2.schedule(tjb2, 10*1000, 20*1000);//任务2是容器启动10秒以后,每20秒执行一次 42 } 43 }
2.创建任务类,任务类是继承了TimerTask 类,并重写了run方法,run方法中就是需要执行的代码段,也可以直接调用其他类
1 package com.test.job; 2 3 import java.util.TimerTask; 4 5 public class timerJobTest extends TimerTask { 6 7 @Override 8 public void run() { 9 // TODO Auto-generated method stub 10 System.out.println("定时任务1任务被执行"); 11 12 } 13 14 }
1 package com.test.job; 2 3 import java.util.TimerTask; 4 5 public class timerJobTest2 extends TimerTask { 6 7 @Override 8 public void run() { 9 // TODO Auto-generated method stub 10 System.out.println("定时任务2任务被执行"); 11 12 } 13 14 }