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

    第一步:

        在web.xml 添加监听:

    <listener>
                //此处为你所要调用的java文件路径
    	    <listener-class>?.?.?.?.LyzListener</listener-class>
    </listener>
    

     

    第二步:

       编写java类进行调用

    public class LyzListener implements  ServletContextListener {
        //类初始化时去实例化TimerManager类。
        public void contextInitialized(ServletContextEvent sce) {
             new TimerManager();
        }
     
        public void contextDestroyed(ServletContextEvent sce) {
            // TODO Auto-generated method stub
             
        }
     
    }
    

    第三步:

       编写TimerManger 时间类,设置运行时间及运行间隔

    public class TimerManager {
    	//时间间隔
        private static final long PERIOD_DAY =24*60*60 * 1000;
        public  TimerManager() {
             Calendar calendar = Calendar.getInstance(); 
                    
             /*** 定制每日0:00执行方法 ***/
    
             calendar.set(Calendar.HOUR_OF_DAY,0);//hh
             calendar.set(Calendar.MINUTE,0);//mm	
             calendar.set(Calendar.SECOND, 0);//ss
              
             Date date=calendar.getTime(); //第一次执行定时任务的时间
             System.out.println(date);
             System.out.println("before 方法比较:"+date.before(new Date()));
             //如果第一次执行定时任务的时间 小于 当前的时间
             //此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准
               if (date.before(new Date())) {
                 date = this.addDay(date, 1);
                 System.out.println(date);
             }
              
             Timer timer = new Timer();
              
             LyzTimerTask task = new LyzTimerTask();
             //安排指定的任务在指定的时间开始进行重复的固定延迟执行。
             timer.schedule(task,date,PERIOD_DAY);
            }
    
            // 增加或减少天数
            public Date addDay(Date date, int num) {
             Calendar startDT = Calendar.getInstance();
             startDT.setTime(date);
             startDT.add(Calendar.DAY_OF_MONTH, num);
             return startDT.getTime();
            }
    
    }
    

    第四部:

      编写你想要定时循环的java类(若是想调用service层可以通过下面代码实现)

    //添加该注解
    //关键1
    @Component
    public class LyzTimerTask extends TimerTask {
       
       //注入service
        @Autowired
    	private WcWorkcardService workcardService;
      
       //关键2
        public static LyzTimerTask tokenUtil;  
        
        // 关键3
        @PostConstruct
        public void init() {
            tokenUtil = this;
        }
    //通过tokenUtil.workcardService(注入的service).方法名即可调用
    
  • 相关阅读:
    【转】 JavaSE学习笔记(3)---面向对象三大特性
    【转】 JavaSE学习笔记(2)---面向对象基础
    【转】 JavaSE学习笔记(1)---数据类型、运算符、控制结构
    对象的循环
    对象的基本操作
    记录字符串出现的次数
    截取文件的扩展名
    字符串的截取 随机验证码
    字符串常用方法
    选择排序算法
  • 原文地址:https://www.cnblogs.com/AsaltedFish/p/10233917.html
Copyright © 2011-2022 走看看