如何在服务器上面执行定时程序,在指定的时候执行指定的代码

首先是ServletContextListener这个类

如果实现这个接口,然后加上xml的配置

<listener>
        <listener-class>com.xxx.xxx.MyTimerTask</listener-class>
      </listener>

当web项目发布至tomcat启动之后会自动加载这个类,然后重写里面的contextInitialized和contextDestroyed方法就能在web容器初始化和销毁的时候干你想干的事情了。这里我们把它用作,开始计时器和结束计时器用。

下面直接上计时器的代码

/**
 * 计时器任务类
 * @author XX
 *
 */
public class MyTimerTask implements ServletContextListener{

    //定义一个计时器
    private Timer timer = null;

    /**
     * 销毁方法
     */
    @Override
    public void contextDestroyed(ServletContextEvent event) {
        timer.cancel();
        System.out.println("定时器销毁");
        event.getServletContext().log("定时器销毁");
    }

    /**
     * 创建方法
     */
    @Override
    public void contextInitialized(ServletContextEvent event) {

        //在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能
        timer = new Timer(true);
        System.out.println("定时器已启动");
        event.getServletContext().log("定时器已启动");//添加日志,可在tomcat日志中查看到 

        //调用exportHistoryBean,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时;
        //timer.schedule(task,0,10*1000);

        Task task = new Task();

        //表示一天的毫秒数
        long daySpan = 24 * 60 * 60 * 1000;
        final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ‘16:49:00‘");

        Date startTime = new Date();
        try {
            startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(sdf.format(new Date()));
        } catch (ParseException e) {
            e.printStackTrace();
        }

        //如果当前已经超过了设置的时间,那么到第二天的这个时间开始
        if(System.currentTimeMillis() > startTime.getTime())
            startTime = new Date(startTime.getTime() + daySpan);

        //设置定时器,从startTime开始,每5秒执行一次task
        timer.scheduleAtFixedRate(task, startTime, 5*1000);

    }

    //定时器执行的任务
    class Task extends TimerTask{

        @Override
        public void run() {
            System.out.println("定时程序!");

        }
    }

}
时间: 2024-08-10 07:19:59

如何在服务器上面执行定时程序,在指定的时候执行指定的代码的相关文章

Windows编程 - 启动可执行(exe)程序 代码(C++)

启动可执行(exe)程序 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 通过输入程序位置启动可执行(exe)程序, 使用windows的CreateProcess()函数, 即可. 示例是调用预先生产的可执行(exe)程序. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #include <iostream> #include <

在Linux中定时执行一个程序的方法之at命令

/*********************************************************************  * Author  : Samson  * Date    : 04/29/2014  * Test platform:  *              3.11.0-12-generic #19-Ubuntu  *              GNU bash, version 4.2.45  * ****************************

详述执行map reduce 程序的步骤(本地执行MR、服务器上执行MR)

MR程序的执行环境有两种:本地测试环境.服务器环境. 1.本地环境执行MR程序的步骤: (1)在windows下配置hadoop的环境变量 (2)拷贝debug工具(winutils)到HADOOP_HOME/bin (3)从源码中拷贝org.apache.hadoop.io.nativeio.NativeIO.java到我们的mr的src目录下,修改NativeIO.java.(大家可去http://download.csdn.net/detail/u013226462/9516657下载.)

VBA定时执行某程序

在工作中我们经常需要定时执行某程序,或者有时需要每隔特定时间执行某个程序,例如我们需要每15分钟执行一次保存的动作,这个功能在VBA中是通过Application.OnTime函数来实现的.这个函数有两个参数,一个是执行程序的时间,另一个是要执行的程序名称.下面来看一代简单代码 Sub macro1()Dim NewTime As DateNewTime = Now + TimeValue("00:00:05")Application.OnTime NewTime, "Mac

shell脚本定时执行php程序

首先写好你需要执行的php程序 我这里呢就是一个PDO链接 写入一个时间 然后我们写一个shell脚本来执行这个php程序 就单纯的一个执行php程序的shell就写好了,然后咱们运行一下 好,显示插入成功,证明这个shell是可以执行的. 然后咱们写一个crontab的定时任务 然后介绍一下五个星星分别表示什么: minute - 分钟 ,从0到59之间的任何整数 hour - 小时, 从0到23之间的任何整数 day - 天, 从1到31之间的任何整数(如果指定了月份,必须是该月份的有效日期

Windows Server 2008中使用计划任务定时执行BAT bat进行PHP脚本的执行

Windows Server 2008中使用计划任务定时执行BAT bat进行PHP脚本的执行 2016年01月03日 17:36:00 持之以恒 阅读数:5520 标签: windows定时任务.bat 更多 个人分类: 定时任务 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq1355541448/article/details/50451607 一.首先进行任务管理器设置  每隔1分钟执行.BAT 文件配置 首先Windows Serv

Java Web应用启动间隔执行的程序

Reference:<Java定时器timer.schedule在Web中间隔执行任务和定时><[Java]Timer和TimerTask详解> 做了一个Demo,完成如下的功能: 让Tomcat在WEB程序启动的时候启动一个线程池和一个Timer线程,Timer线程每隔一段时间跑一次(比如检查到期的用户,类似轮询查看),然后触发另一个后台线程(甩给线程池去处理,比如处理到期的用户,发送等). 直接用代码说话 StarupListener.java package Listener

方法阻塞,方法一直阻塞,意味着这个程序卡在这里,一直不向下运行。知道这个阻塞方法执行完毕,有返回值。程序才继续向下执行

方法阻塞,方法一直阻塞,意味着这个程序卡在这里,一直不向下运行.知道这个阻塞方法执行完毕,有返回值.程序才继续向下执行. while (true) { // 当注册事件到达时,方法返回,否则该方法会一直阻塞 selector.select();  //这里将一直阻塞,程序不会向下执行.直到这个方法执行完,有返回值后 2.// 采用轮询的方式监听selector上是否有需要处理的事件,如果有,则进行处理 NIO SERVER NIO SERVERpackage com.anders.selecto

深入浅出web服务器与python应用程序之间的联系

简单来说,Web服务器是在运行在物理服务器上的一个程序,它永久地等待客户端(主要是浏览器,比如Chrome,Firefox等)发送请求.Web 服务器接受 Http Request,返回 Response,很多时候 Response 并不是静态文件,因此需要有一个应用程序根据 Request 生成相应的 Response.这里的应用程序主要用来处理相关业务逻辑,读取或者更新数据库,根据不同 Request 返回相应的 Response.两者之间的桥梁就是WSGI. 一直喜欢研究比较底层的技术,