zoukankan      html  css  js  c++  java
  • web程序定时器

     1 package com.timer;
     2 
     3 import java.util.Calendar;
     4 import java.util.Date;
     5 import java.util.Timer;
     6 
     7 import javax.servlet.ServletContext;
     8 
     9 /**
    10  * Created on 2013-8-13
    11  * Title: J2EE程序_[定时任务管理器]_[公共类]
    12  * Description: [定时器]
    13  * Copyright: xuqb (c) 2013
    14  * Company: xuqb工作室
    15  * 
    16  * @developer xuqb[155282323@qq.com]
    17  * @version 1.0
    18  */
    19 public class TimerManager {
    20     /**
    21      * Description:[时间间隔,每天执行次数(每五秒执行一次)]
    22      * Value:PERIOD_DAY
    23      */
    24     private static final long PERIOD_DAY = 5 * 1000;
    25 
    26     /**
    27      * Description:[构造方法]
    28      * @constructor 方法.
    29      */
    30     public TimerManager(ServletContext event) {
    31         // --获取配置文件中的时间
    32         String commitCount = "0:0";
    33         
    34         String[] objtime = null;
    35         // 拆分从配置文件预设的小时和分钟;若没有,则默认零时零分执行(24小时制)
    36         if (commitCount != null && !"".equals(commitCount)) {
    37             objtime = commitCount.split(":");
    38         } else {
    39             objtime = new String[2];
    40             objtime[0] = "0"; // 零时(24小时制)
    41             objtime[1] = "0"; // 零分(24小时制)
    42         }
    43         int beginHour = Integer.parseInt(objtime[0]); // 开始执行小时(24小时制)
    44         int beginMimu = Integer.parseInt(objtime[1]); // 开始执行分钟(24小时制)
    45         Calendar calendar = Calendar.getInstance();
    46         /*** 定制每日某时:某分执行方法(24小时制) ***/
    47         calendar.set(Calendar.HOUR_OF_DAY, beginHour); // 开始执行小时(24小时制)
    48         calendar.set(Calendar.MINUTE, beginMimu); // 开始执行分钟(24小时制)
    49         calendar.set(Calendar.SECOND, 0); // 开始执行秒(24小时制)
    50         Date date = calendar.getTime(); // 第一次执行定时任务的时间
    51         // 如果第一次执行定时任务的时间 小于 当前的时间
    52         // 此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
    53         if (date.before(new Date())) {
    54             date = this.addDay(date, 0); // 0代表增加0天
    55         }
    56         Timer timer = new Timer();
    57         NFDFlightDataTimerTask task = new NFDFlightDataTimerTask(event);
    58         // 安排指定的任务在指定的时间开始进行重复的固定延迟执行。
    59         timer.schedule(task, date, PERIOD_DAY);
    60     }
    61 
    62     /**
    63      * Created on 2013-8-13
    64      * Description: [增加或减少天数]
    65      * 
    66      * @param date
    67      * @param num
    68      * @return
    69      * @developer: xuqb[155282323@qq.com]
    70      * @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
    71      */
    72     public Date addDay(Date date, int num) {
    73         Calendar startDT = Calendar.getInstance();
    74         startDT.setTime(date);
    75         startDT.add(Calendar.DAY_OF_MONTH, num);
    76         return startDT.getTime();
    77     }
    78 }
     1 package com.timer;
     2 
     3 import java.util.TimerTask;
     4 
     5 import javax.servlet.ServletContext;
     6 
     7 
     8 /**
     9  * Created on 2013-8-13
    10  * Title: JavaWeb程序_[定时任务管理器]_[引用类]
    11  * Description: [配合定时器引入具体业务实现类]
    12  * Copyright: xuqb (c) 2013
    13  * Company: xuqb工作室
    14  * @developer xuqb[155282323@qq.com]
    15  * @version 1.0
    16  */
    17 public class NFDFlightDataTimerTask extends TimerTask {
    18     
    19     private ServletContext context = null;
    20     
    21     public NFDFlightDataTimerTask(ServletContext context){
    22         this.context =  context;
    23     }
    24     
    25     
    26     /**
    27      * Created on 2013-8-13
    28      * Description: [方法功能中文描述]
    29      * 
    30      * @developer: xuqb[155282323@qq.com]
    31      * @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
    32      */
    33     public void run() {
    34         try {
    35             
    36             int num = (int)(1+Math.random()*(10-1+1));
    37             System.out.println(num);
    38             context.setAttribute("bull", num);
    39             
    40             System.out.println(context.getAttribute("bull"));
    41             // 在这里写你要执行的内容
    42             System.out.println("这里编辑您的业务方法");
    43         } catch (Exception emz) {
    44             System.out.println("解析信息发生异常");
    45             emz.printStackTrace();
    46         }
    47     }
    48 }
     1 package com.timer;
     2 
     3 import javax.servlet.ServletContext;
     4 import javax.servlet.ServletContextEvent;
     5 import javax.servlet.ServletContextListener;
     6 
     7 /**
     8  * Created on 2013-8-13
     9  * Title: JavaWeb程序_[模块名称]_[说明]
    10  * Description: [描述该类概要功能介绍]
    11  * Copyright: xuqb (c) 2013
    12  * Company: xuqb工作室
    13  * 
    14  * @developer xuqb[155282323@qq.com]
    15  * @version 1.0
    16  */
    17 public class NFDFlightDataTaskListener implements ServletContextListener {
    18     
    19     private ServletContext context = null;
    20     
    21     /**
    22      * Created on 2013-8-13
    23      * Description: [方法功能中文描述]
    24      * 
    25      * @developer: xuqb[155282323@qq.com]
    26      * @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
    27      */         
    28     public void contextInitialized(ServletContextEvent event) {
    29         this.context = event.getServletContext();
    30         new TimerManager(context);
    31     }
    32 
    33     /**
    34      * Created on 2013-8-13
    35      * Description: [方法功能中文描述]
    36      * 
    37      * @developer: xuqb[155282323@qq.com]
    38      * @update: [日期YYYY-MM-DD][更改人姓名][E-mail]
    39      */
    40     public void contextDestroyed(ServletContextEvent event) {
    41     }
    42 }

    web.xml 插入如下代码

    1    <!-- begin 定时任务管理器 -->  
    2   <listener>  
    3       <listener-class>com.timer.NFDFlightDataTaskListener</listener-class>  
    4   </listener>   
    5   <!-- end 定时任务管理器-->  
  • 相关阅读:
    阿里云服务器mysql连接不了2003 -can't connect to mysql server on 'ip' (10038)
    androidstudio代码混淆
    apk反编译
    android bottomnavicationbar底部图标vector设计
    Java++:不要随意使用 Cookie 会引火烧身的
    Java++:用户认证-基于 jwt 和 session 的区别和优缺点
    Spring++:AOP 拦截 Service | Controller 日志
    Spring++:整合 Retry 实现重试机制
    (xxl_job | quartz):XXL_JOB 对比 Quartz 一决高下!
    Spring++:定时任务 Cron表达式详解
  • 原文地址:https://www.cnblogs.com/zfy0098/p/5500814.html
Copyright © 2011-2022 走看看