码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-04-28 20:06:08      阅读:398      评论:0      收藏:0      [点我收藏+]

标签:

首先是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("定时程序!");
            
        }
    }
    
}

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

标签:

原文地址:http://www.cnblogs.com/linkstar/p/5443904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!