zoukankan      html  css  js  c++  java
  • 使用监听器:定时清除map缓存的key value .


    使用监听器:定时清除map缓存的key value .

    配置web.xml:注意位置

     <listener>
      <listener-class>
       com.my.common.listener.TimerListener
      </listener-class>
     </listener>

    监听类:

    public class TimerListener implements ServletContextListener
    {
            public void contextDestroyed(ServletContextEvent event)
     {
             //服务停止时执行
     }

     public void contextInitialized(ServletContextEvent arg0)
     {
      //服务启动、初始化时执行
      int minutes = 10;
      int second = 60;
      int timeDistance = 1000;
                    //使用定时类,每隔一段时间执行
      java.util.Timer timer = new java.util.Timer();
      timer.schedule(new MyRandomMap(), new Date(), minutes * second* timeDistance);
     }

     private class MyRandomMap extends java.util.TimerTask  //实现了TimerTask的类
     {
      public void run()
      {      
       clearRandomMap();//每隔一段时间执行
      }
     }

     public void clearRandomMap()
     {
     
      // 清除map过期的key
      List<String> list = new ArrayList<String>();
     
      Long now = System.currentTimeMillis();
      
      Iterator iter = Tools.randomMap.keySet().iterator();
      while (iter.hasNext())
      {
       
      String key = iter.next().toString();
      Long val = Tools.randomMap.get(key);
    //设计很巧妙:使用时间(毫秒)作为value,好处在于可以与当前时间(毫秒)比较大小,从达到过时

    删除

    的目的 
      if(now-val>2 * 60 * 1000)        
      {
      list.add(key);
     
      }
     
      }

      for (int i = 0; i < list.size(); i++)
      {
       Tools.randomMap.remove(list.get(i));

      }

     }
    }

  • 相关阅读:
    stm32之watchdog
    stm32之PWM
    stm32之GPIO(二)
    JavaScript之怎样获取元素节点
    JavaScript之对象学习
    JavaScript之数组学习
    Jquery遍历数组之$.inArray()方法介绍
    Jquery 遍历数组之$().each方法与$.each()方法介绍
    C# 移位运算符
    tensorboard简单使用
  • 原文地址:https://www.cnblogs.com/qqzy168/p/3136970.html
Copyright © 2011-2022 走看看