麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

Java緩存池代碼實例詳解

2019-11-26 12:32:58
字體:
供稿:網(wǎng)友

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

CacheItem  緩存實體類

CachePool  緩存池

Student  學(xué)生實體類

MainTest  主測試類

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

緩存實體類

package com.paic.zhangqi.cache;  import java.util.Date;  /**  * 緩存實體  * @author ZHANGQI947  */ public class CacheItem {   // 創(chuàng)建緩存時間  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);  }  /**   * 移除緩存數(shù)據(jù)   * @param name   */  public synchronized void removeCacheItem(String name) {   if (!cacheItems.containsKey(name)) {    return ;   }   cacheItems.remove(name);  }    /**   * 獲取緩存數(shù)據(jù)的數(shù)量   * @return   */  public int getSize() {   return cacheItems.size();  }  } 

學(xué)生類Student

package com.paic.zhangqi.cache; /**  * 學(xué)生類  * @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);      // 設(shè)置線程休眠,其中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());   }      // 獲取打印緩存池中對象數(shù)量   int cacheSize = cachePool.getSize();   System.out.println(cacheSize);      // 刪除對象002   cachePool.removeCacheItem("002");     // 打印緩存池數(shù)量   cacheSize = cachePool.getSize();   System.out.println(cacheSize);  } } 

測試結(jié)果

l1 

3

希望本篇文章內(nèi)容對您有所幫助

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 鲁丝片一区二区三区免费入口 | a黄毛片| 久久国产精品91 | 性生活香蕉视频 | 激情久久精品 | 欧美精品18videos性欧美 | 日韩精品中文字幕一区二区三区 | 国产精品视频免费网站 | 亚洲精品wwww | 国产1区视频| 久久成年网站 | 日本看片一区二区三区高清 | 日韩av片在线免费观看 | 男人的天堂视频网站 | av影院在线播放 | 毛片一区二区三区四区 | 黄污免费网站 | 91麻豆精品国产91久久久无需广告 | 久久吊| 亚洲精品 在线播放 | 亚洲一区中文字幕 | 亚洲视频在线网 | 欧美男女爱爱视频 | 欧美精品电影一区 | 亚洲一级成人 | 本色视频aaaaaa一级网站 | 久草干| 亚洲视频成人 | 久久逼逼 | 欧美亚洲国产成人综合在线 | 91麻豆精品国产91久久久点播时间 | 中文字幕在线播放不卡 | www.91sese| 欧美日韩一区三区 | 国产一区网址 | 在线观看国产 | 日韩午夜一区二区三区 | jizzjizz中国少妇中文 | 欧美精品18videos性欧美 | 欧美日穴视频 | 欧美人xx|