a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Java > 正文

Java緩存池代碼實例詳解

2019-11-26 12:32:58
字體:
來源:轉載
供稿:網友

這篇實例中有四個類,分別為

CacheItem  緩存實體類

CachePool  緩存池

Student  學生實體類

MainTest  主測試類

其中,緩存實體類CacheItem  中存放管理學生實體對象Student  ,緩存實體類CacheItem  存放在緩存池CachePool  中,MainTest  主要負責整體的測試工作。

緩存實體類

package com.paic.zhangqi.cache;  import java.util.Date;  /**  * 緩存實體  * @author ZHANGQI947  */ public class CacheItem {   // 創建緩存時間  private Date createTime = new Date();    // 緩存期滿時間  private long expireTime = 1;    // 緩存實體  private Object entity;     public CacheItem(Object obj, long expires) {   this.entity = obj;   this.expireTime = expires;  }    // 判斷緩存是否超時  public boolean isExpired() {   return (expireTime != -1 && new Date().getTime() - createTime.getTime() > expireTime);  }   public Date getCreateTime() {   return createTime;  }   public void setCreateTime(Date createTime) {   this.createTime = createTime;  }   public Object getEntity() {   return entity;  }   public void setEntity(Object entity) {   this.entity = entity;  }   public long getExpireTime() {   return expireTime;  }   public void setExpireTime(long expireTime) {   this.expireTime = expireTime;  } } 

緩存池CachePool

package com.paic.zhangqi.cache;  import java.util.Date; import java.util.HashMap; import java.util.Map; /**  * 緩存池  * @author Administrator  */ public class CachePool {  // 緩存池唯一實例  private static CachePool instance;  // 緩存Map  private static Map<String, Object> cacheItems;    private CachePool() {   cacheItems = new HashMap<String, Object>();  }    /**   * 獲取唯一的實例   * @return instance   */  public synchronized static CachePool getInstance() {   if (instance == null) {    instance = new CachePool();   }   return instance;  }    /**   * 清除所有的Item緩存   */  public synchronized void clearAllItems() {   cacheItems.clear();  }    /**   * 獲取緩存實例   * @param name 緩存名稱   * @return 緩存實例   */  public synchronized Object getCacheItem(String name) {   if (!cacheItems.containsKey(name)) {    return null;   }   CacheItem cacheItem = (CacheItem) cacheItems.get(name);   if (cacheItem.isExpired()) {    return null;   }   return cacheItem.getEntity();  }  /**   * 存放緩存信息   * @param name 名稱   * @param obj 實例對象   * @param expires 超時時長   */  public synchronized void putCacheItem(String name, Object obj, long expires) {   // 判斷該對象是否在在緩存池,不在直接put   if (!cacheItems.containsKey(name)) {    cacheItems.put(name, new CacheItem(obj, expires));   }   // 獲取緩存池中對象,更新對象信息   CacheItem cacheItem = (CacheItem) cacheItems.get(name);   cacheItem.setCreateTime(new Date());   cacheItem.setEntity(obj);   cacheItem.setExpireTime(expires);  }  /**   * 移除緩存數據   * @param name   */  public synchronized void removeCacheItem(String name) {   if (!cacheItems.containsKey(name)) {    return ;   }   cacheItems.remove(name);  }    /**   * 獲取緩存數據的數量   * @return   */  public int getSize() {   return cacheItems.size();  }  } 

學生類Student

package com.paic.zhangqi.cache; /**  * 學生類  * @author Administrator  */ public class Student {   private String name;  private String id;  private int age;  private int sal;  public Student() {     }    public Student(String name, String id, int age, int sal) {   this.name = name;   this.id = id;   this.age = age;   this.sal = sal;  }   public String getName() {   return name;  }   public void setName(String name) {   this.name = name;  }   public String getId() {   return id;  }   public void setId(String id) {   this.id = id;  }   public int getAge() {   return age;  }   public void setAge(int age) {   this.age = age;  }   public int getSal() {   return sal;  }  public void setSal(int sal) {   this.sal = sal;  } }

主測試類MainTest

package com.paic.zhangqi.cache; /**  * 主測試類  * @author ZHANGQI947  */ public class MainTest {   /**   * @param args   * @throws InterruptedException   */  public static void main(String[] args) throws InterruptedException {   // 獲取緩存池   CachePool cachePool = CachePool.getInstance();      Student stu1 = new Student("l1", "stu001", 25, 40);   Student stu2 = new Student("l2", "stu002", 25, 40);   Student stu3 = new Student("l3", "stu003", 25, 40);   Student stu4 = new Student("l4", "stu004", 25, 40);      cachePool.putCacheItem("001", stu1, 122222);   cachePool.putCacheItem("002", stu2, 10);   cachePool.putCacheItem("003", stu3, 360002);   cachePool.putCacheItem("004", stu4, 1222222);      // 設置線程休眠,其中002對象會超時   Thread.sleep(200);      Student stu001 = (Student) cachePool.getCacheItem("001");   if (null != stu001) {    System.out.println(stu001.getName());   }      // 由于超時,這里取出的002對象為null   Student stu002 = (Student) cachePool.getCacheItem("002");   if (null != stu002) {    System.out.println(stu002.getName());   }      // 獲取打印緩存池中對象數量   int cacheSize = cachePool.getSize();   System.out.println(cacheSize);      // 刪除對象002   cachePool.removeCacheItem("002");     // 打印緩存池數量   cacheSize = cachePool.getSize();   System.out.println(cacheSize);  } } 

測試結果

l1 

3

希望本篇文章內容對您有所幫助

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天天碰天天操 | 国内精品视频一区二区三区 | 欧美精品xx| 黑人巨大精品欧美一区二区小视频 | 99re6热在线精品视频播放 | 一区二区免费在线观看 | 91天堂| 91视频网 | av网站观看 | 久久夜色精品国产 | 国产视频观看 | 国产精品久久久久久久久免费桃花 | 国家aaa的一级看片 亚洲国产91 | 亚洲成人精品网 | 一级毛片大全免费播放 | 丝袜+亚洲+另类+欧美+变态 | 四虎影院最新网址 | 最新国产精品精品视频 | 亚洲欧美999 | 久久伊人在 | 六月色婷婷 | 欧美精品亚洲精品 | 亚洲免费视频大全 | 国产精品 日韩 | 国产精品久久久久久久久久免费看 | 国产一区二区三区免费视频 | 日韩午夜 | 91福利视频导航 | 亚洲 精品 综合 精品 自拍 | 亚洲精品在 | 日韩视频一区二区三区 | 蜜臀va亚洲va欧美va天堂 | 99国产精品99久久久久久 | 国产精品美女视频网站 | 中文字幕日韩欧美 | 久久久久久久999 | 91精品久久久久久久久中文字幕 | 日韩激情视频一区二区 | 性色av一二三杏吧传媒 | 美女久久久 | 成人在线小视频 |