Springmvc项目启动后定时执行某个方法

来源:互联网 发布:sql数据库编程 编辑:程序博客网 时间:2024/06/04 18:43

1.需求

   在数据库中有一个表储存定时发布的信息和定时发布的时间,在项目发布后,每过5分钟定时读一次数据库,如果到了定时发布时间就操作发布。比如定时发布某几篇文章,数据库就保存文章的id串以及发布时间

1.web.xml配置

<servlet>   <servlet-name>GenerateWCData</servlet-name>   <servlet-class>com.modu.secure.view.admin.phone.GenerateWCData</servlet-class>   <load-on-startup>2</load-on-startup> </servlet>

2.继承httpservlet的类,初始化执行init()方法

public class GenerateWCData extends HttpServlet {public void init(){Timer timer = new Timer();          timer.schedule(new TimerTask() {              public void run() {                  System.out.println("-------设定要指定任务--------");              }          }, 1000*60*5, 1000*60*5);  }}
这儿是每过5分钟执行一次方法



3.模板

public class Test {public static void main(String[] args) {          //timer1();          timer2();          //timer3();          //timer4();      }        // 第一种方法:设定指定任务task在指定时间time执行 schedule(TimerTask task, Date time)      public static void timer1() {          Timer timer = new Timer();          timer.schedule(new TimerTask() {              public void run() {                  System.out.println("-------设定要指定任务--------");              }          }, 2000);// 设定指定的时间time,此处为2000毫秒      }        // 第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行      // schedule(TimerTask task, long delay, long period)      public static void timer2() {          Timer timer = new Timer();          timer.schedule(new TimerTask() {              public void run() {                  System.out.println("-------设定要指定任务--------");              }          }, 2000*5, 2000*5);      }        // 第三种方法:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。      // scheduleAtFixedRate(TimerTask task, long delay, long period)      public static void timer3() {          Timer timer = new Timer();          timer.scheduleAtFixedRate(new TimerTask() {              public void run() {                  System.out.println("-------设定要指定任务--------");              }          }, 1000, 2000);      }           // 第四种方法:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行.      // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)      public static void timer4() {          Calendar calendar = Calendar.getInstance();          calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制时          calendar.set(Calendar.MINUTE, 0);       // 控制分          calendar.set(Calendar.SECOND, 0);       // 控制秒            Date time = calendar.getTime();         // 得出执行任务的时间,此处为今天的12:00:00            Timer timer = new Timer();          timer.scheduleAtFixedRate(new TimerTask() {              public void run() {                  System.out.println("-------设定要指定任务--------");              }          }, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行      }  }


0 0
原创粉丝点击