Java:Web应用下实现定时任务的简便方法

2016-02-19 19:12 20 1 收藏

下面,图老师小编带您去了解一下Java:Web应用下实现定时任务的简便方法,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - 编程语言 】

  在WEB应用下实现定时任务的简便方法

  在web方式下,假如我们要实现定期执行某些任务的话,除了用quartz等第三方开源工具外,我们可以使用Timer和TimeTask来完成指定的定时任务:

  第一步:创建一个任务治理类,实现ServletContextListener 接口

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  以下是引用片段:
  public class TaskManager implements ServletContextListener {
   /**
    * 天天的毫秒数
    */
   public static final long PERIOD_DAY = DateUtils.MILLIS_IN_DAY;
   /**
    * 一周内的毫秒数
    */
   public static final long PERIOD_WEEK = PERIOD_DAY * 7;
   /**
    * 无延迟
    */
   public static final long NO_DELAY = 0;
   /**
    * 定时器
    */
   private Timer timer;
   /**
    * 在Web应用启动时初始化任务
    */
   public void contextInitialized(ServletContextEvent event) {
          //定义定时器
    timer = new Timer("数据库表备份",true);
    //启动备份任务,每月(4个星期)执行一次
    timer.schedule(new BackUpTableTask(),NO_DELAY, PERIOD_WEEK * 4);
  //  timer.schedule(new BackUpTableTask(),NO_DELAY, 30000);
   }
   /**
    * 在Web应用结束时停止任务
    */
   public void contextDestroyed(ServletContextEvent event) {
    timer.cancel(); // 定时器销毁
   }
  }

    第二步:创建一个时间任务类

  

  以下是引用片段:
  public class BackUpTableTask extends TimerTask {
   private static Log log = LogFactory.getLog(BackUpTableTask.class);
   private static boolean isRunning = false;
   public void run() {
    if (!isRunning) {
     isRunning = true;
     log.debug("开始执行任务..."); //开始任务
     //working  add what you want to do
     log.debug("执行任务完成..."); //任务完成
     isRunning = false;
    } else {
     log.debug("上一次任务执行还未结束..."); //上一次任务执行还未结束
    }
   }
  }

  第三步:在web中添加一个监听器

  以下是引用片段:
   listener
    listener-class***.TaskManager/listener-class
    description要定期执行的任务/description
   /listener

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  那么在web服务器启动的时候,任务也被启动,并且会周期性的执行


    

来源:http://www.tulaoshi.com/n/20160219/1620310.html

延伸阅读
  cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload...
数字地球(Digital Earth)实际上是一种地理信息系统(Geographic Information System,以下简称GIS)的面向公众的应用,想比传统的GIS应用,利用数字地球提供的Web Service接口和API,开发人员不需要了解GIS的专业知识和专业技术就可以构建强大的Ajax应用。本文将对数字地球的Web Service的业务应用和技术应用展开讨论,并就目前流行的数字地球...
标签: Web开发
项目代码结构见 我之前写的[EXT/FCKEditor 集成 -- AJAX UI -- 一种web开发的新的思维,要及时转换思想]一文. 中的 ├─taskofpig │ ├─Controller │ ├─Dao │ ├─js │ ├─music │ ├─tpl │ ├─tpl_c │ └─_log 项目代码如下: db.sql SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure...
代码如下: public static void shutdown(){          System.out.print("请输入多少分钟后关机:");          Scanner scanner = new Scanner(System.in);          int minute = scanner.nextInt()*60;  &nb...
http://tailsherry.javaeye.com/blog/176152 熟悉编写JavaScript的人,都习惯在页面写入setTimeOut来实现web页面的定时监控或事务处理。但是如何在Java服务端来实现这样一个监控机制呢?一般大家都会想到线程。但是一直以来,都没有亲身动手实践过。趁着工作间隙,自己也搬出一段代码来,与大家一起分享线程编程的神奇魔力。 &n...

经验教程

809

收藏

70
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部