zoukankan      html  css  js  c++  java
  • 定时器tasktimer

    1、web.xml中配置

    <servlet> 
    <servlet-name>TaskTimer</servlet-name> 
    <servlet-class>com.XXXXX.controller.TaskTimer</servlet-class> 
    <load-on-startup>2</load-on-startup> 
    </servlet>

    2、写实现方法

    package com.XXX.controller;
    
    import java.util.Date;
    import java.util.Timer;  
    import java.util.TimerTask;
    
    import javax.servlet.http.HttpServlet;
    
    public class TaskTimer extends HttpServlet{
        
        private static final long serialVersionUID = 1L;
    
        public void init(){
            Timer timer = new Timer();    
            timer.schedule(new TimerTask() {    
                public void run() {    
                    System.out.println(new Date()+"-----Hello !!!");
                }    
            }, 1000*5, 1000*3);//第二个参数为多少毫秒后启动,第三个参数为每个多少毫秒执行一次
        }
    }

     若在TaskTimer中调用service,用@Autowired注入,启动项目会报空指针错误,原因及分析可查看此文档

    因此对代码进行修改

    package com.XXXX.controller;
    
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    import java.util.Timer;  
    import java.util.TimerTask;
    
    import javax.servlet.ServletContextEvent;
    import javax.servlet.http.HttpServlet;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.context.WebApplicationContext;
    import org.springframework.web.context.support.WebApplicationContextUtils;
    
    @Controller
    public class TaskTimer extends HttpServlet{
        private static final long serialVersionUID = 1L;
    
        public void init(){
            final ServletContextEvent sce = new ServletContextEvent(getServletContext());
    Timer timer = new Timer(); timer.schedule(new TimerTask() { //获得Spring容器 WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); //从Spring容器中获得SelectDataServlet的实例 private Service service = ctx.getBean(service.class);public void run() { System.out.println("已经开始跑定时器");
              //定时器主体,此处可调用service实体
    } }, 1000*5, 1000*60*60*24); } }
  • 相关阅读:
    python入门 类的继承和聚合(五)
    如何快速找到多个字典中的公共键(1.4)
    python输入输出(二)
    python入门 集合(四)
    LOJ 3093: 洛谷 P5323: 「BJOI2019」光线
    LOJ 3049: 洛谷 P5284: 「十二省联考 2019」字符串问题
    【比赛游记】FJOI2019瞎打记
    ICPC World Finals 2019 题解
    LOJ 3043: 洛谷 P5280: 「ZJOI2019」线段树
    LOJ 2483: 洛谷 P4655: 「CEOI2017」Building Bridges
  • 原文地址:https://www.cnblogs.com/xiufengd/p/8334966.html
Copyright © 2011-2022 走看看