中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中的緩存池有哪些

發布時間:2020-11-17 15:54:48 來源:億速云 閱讀:279 作者:Leah 欄目:編程語言

Java中的緩存池有哪些?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

緩存實體類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

關于Java中的緩存池有哪些問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德安县| 陇南市| 东港市| 百色市| 长阳| 荃湾区| 湟中县| 汕头市| 福安市| 迭部县| 广饶县| 专栏| 松溪县| 巴里| 和林格尔县| 广昌县| 沙河市| 沙洋县| 梁平县| 八宿县| 维西| 北京市| 柞水县| 马公市| 苗栗县| 宣汉县| 宁津县| 涟水县| 华安县| 徐水县| 东源县| 信阳市| 锡林郭勒盟| 临海市| 北京市| 芦溪县| 象州县| 灵石县| 义乌市| 竹溪县| 崇信县|