zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    lombok介绍
    idea 离线安装 lombok插件
    Java中Lambda表达式的使用
    接口里的default,static方法
    Maven多环境配置实战 filter
    redis lua脚本学习
    redis的安装
    jdbc插入或查询数据库时间总是比实际时间少8小时原因
    [设计模式]单件模式
    [设计模式]命令模式
  • 原文地址:https://www.cnblogs.com/Jeremy2001/p/6070642.html
Copyright © 2011-2022 走看看