• 定时器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发送丁丁消息
    python实现发送微信消息
    Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹
    Jenkins服务器磁盘空间爆满问题解决
    如何在Linux中自动删除或清理/tmp文件夹内容?
    Linux系统挂载NFS文件系统
    mongodb创建用户创建库分配权限
    docker部署node.js
    【leetcode】1588. Sum of All Odd Length Subarrays
    【leetcode】1559. Detect Cycles in 2D Grid
  • 原文地址:https://www.cnblogs.com/xiufengd/p/8334966.html
Copyright © 2020-2023  润新知