java定时器-java中用监听器写的定时器例子

前沿:为了清楚的讲明白java定时器的创建,下面以一个规定每天10点时候自动查询用户表的例子为例。步骤如下:

1.配置监听器(web.xml里配置一个监听器)

   <listener> 
      <description>自动查询用户表监听器</description>
      <listener-class>com.tcl.base.web.listener.TimerSendOrderListener</listener-class> 
    </listener>

2.实现上面配置的那个监听器类:TimerSendOrderListener

package com.tcl.base.web.listener;

/**
 * 订单对账定时器监听器
 * @author Administrator
 *
 */
@SuppressWarnings("serial")
public class TimerSendOrderListener extends HttpServlet implements
        ServletContextListener {
    private Timer timer = null;

    public void contextInitialized(ServletContextEvent event) {
        timer = new Timer(true);
        event.getServletContext().log("自动查询用户表监听器已启动");
        timer.schedule(new TimerSendOrder(event.getServletContext()), 0, 1000);
        // 0表示Tomcat启动时运行,且不延迟1000表示运行周期为1秒                  
        event.getServletContext().log("自动查询用户表已经添加任务调度表");
       
    }

    public void contextDestroyed(ServletContextEvent event) {
        timer.cancel();
        event.getServletContext().log("自动查询用户表监听器销毁");
    }
}

3.实现重头戏--自动查询用户表的定时器了类:TimerSendOrder

public class TimerSendOrder extends TimerTask {
     
    public TimerSendOrder() {
        super();
    }

    private static final int C_SCHEDULE_HOUR = 10;// 这个代表10点钟的时候执行任务
    private static boolean isRunning = false;
    private ServletContext context = null;

    public TimerSendOrder(ServletContext context) {
        this.context = context;
        //ServletContext servletContext = request.getSession().getServletContext();
       
    }

    public void run() {
       
        Calendar cal = Calendar.getInstance();
        if (!isRunning) {
            if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) {
                isRunning = true;
                context.log("开始执行指定任务");
                   //从这儿开始后面的代码才是我们在执行定时器时候具体要实现的业务逻辑了
                    //这里还是以查询用户表为例
                      userList("select * from user");
                 }
        } else {
            context.log("上一次任务执行还未结束");
        }
            }

          public void init() throws ServletException {
              }
        }
 

本文出自 “重新来学JAVA” 博客,转载请与作者联系!

你可能感兴趣的:(java,监听器,定时器)