最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java緩存池代碼實(shí)例詳解

 更新時(shí)間:2017年04月20日 09:24:02   作者:蝸牛-  
本篇文章主要介紹了Java實(shí)現(xiàn)簡單的緩存方法實(shí)例,需要的朋友可以參考下

這篇實(shí)例中有四個(gè)類,分別為

CacheItem  緩存實(shí)體類

CachePool  緩存池

Student  學(xué)生實(shí)體類

MainTest  主測試類

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

緩存實(shí)體類

package com.paic.zhangqi.cache;  
import java.util.Date; 
 
/** 
 * 緩存實(shí)體 
 * @author ZHANGQI947 
 */ 
public class CacheItem {  
 // 創(chuàng)建緩存時(shí)間 
 private Date createTime = new Date();   
 // 緩存期滿時(shí)間 
 private long expireTime = 1;   
 // 緩存實(shí)體 
 private Object entity;    
 public CacheItem(Object obj, long expires) { 
  this.entity = obj; 
  this.expireTime = expires; 
 }   
 // 判斷緩存是否超時(shí) 
 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 { 
 // 緩存池唯一實(shí)例 
 private static CachePool instance; 
 // 緩存Map 
 private static Map<String, Object> cacheItems;   
 private CachePool() { 
  cacheItems = new HashMap<String, Object>(); 
 }   
 /** 
  * 獲取唯一的實(shí)例 
  * @return instance 
  */ 
 public synchronized static CachePool getInstance() { 
  if (instance == null) { 
   instance = new CachePool(); 
  } 
  return instance; 
 }   
 /** 
  * 清除所有的Item緩存 
  */ 
 public synchronized void clearAllItems() { 
  cacheItems.clear(); 
 }   
 /** 
  * 獲取緩存實(shí)例 
  * @param name 緩存名稱 
  * @return 緩存實(shí)例 
  */ 
 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 實(shí)例對象 
  * @param expires 超時(shí)時(shí)長 
  */ 
 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對象會(huì)超時(shí) 
  Thread.sleep(200);    
  Student stu001 = (Student) cachePool.getCacheItem("001"); 
  if (null != stu001) { 
   System.out.println(stu001.getName()); 
  }    
  // 由于超時(shí),這里取出的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");   
  // 打印緩存池?cái)?shù)量 
  cacheSize = cachePool.getSize(); 
  System.out.println(cacheSize); 
 } 
} 

測試結(jié)果

l1 

3

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

相關(guān)文章

  • SpringBoot中Zookeeper分布式鎖的原理和用法詳解

    SpringBoot中Zookeeper分布式鎖的原理和用法詳解

    Zookeeper是一個(gè)分布式協(xié)調(diào)服務(wù),它提供了高可用、高性能、可擴(kuò)展的分布式鎖機(jī)制,SpringBoot是一個(gè)基于Spring框架的開發(fā)框架,它提供了對Zookeeper分布式鎖的集成支持,本文將介紹SpringBoot中的 Zookeeper分布式鎖的原理和使用方法,需要的朋友可以參考下
    2023-07-07
  • SpringBoot注冊FilterRegistrationBean相關(guān)情況講解

    SpringBoot注冊FilterRegistrationBean相關(guān)情況講解

    這篇文章主要介紹了SpringBoot注冊FilterRegistrationBean相關(guān)情況,借助FilterRegistrationBean來注冊filter,可以避免在web.xml種配置filter這種原始的寫法
    2023-02-02
  • Java 在Excel中添加分離型餅圖、環(huán)形圖的方法

    Java 在Excel中添加分離型餅圖、環(huán)形圖的方法

    這篇文章主要介紹了Java 在Excel中添加分離型餅圖、環(huán)形圖的方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • Java中equals()方法重寫實(shí)現(xiàn)代碼

    Java中equals()方法重寫實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java中equals()方法重寫實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java如何將處理完異常之后的程序能夠從拋出異常的地點(diǎn)向下執(zhí)行?

    Java如何將處理完異常之后的程序能夠從拋出異常的地點(diǎn)向下執(zhí)行?

    今天小編就為大家分享一篇關(guān)于Java如何將處理完異常之后的程序能夠從拋出異常的地點(diǎn)向下執(zhí)行?,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 使用Java Api操作HDFS過程詳解

    使用Java Api操作HDFS過程詳解

    這篇文章主要介紹了使用Java Api操作HDFS過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 使用redisTemplate的scan方式刪除批量key問題

    使用redisTemplate的scan方式刪除批量key問題

    這篇文章主要介紹了使用redisTemplate的scan方式刪除批量key問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Commons beanutils組件簡介

    Commons beanutils組件簡介

    這篇文章主要介紹了commons beanutils組件的相關(guān)內(nèi)容,以及部分實(shí)例和基本用法,需要的朋友可以參考下
    2017-09-09
  • Java中的自旋鎖與阻塞鎖詳解

    Java中的自旋鎖與阻塞鎖詳解

    這篇文章主要介紹了Java中的自旋鎖與阻塞鎖詳解,阻塞鎖是指當(dāng)線程嘗試獲取鎖失敗時(shí),線程進(jìn)入阻塞狀態(tài),直到接收信號(hào)后被喚醒,阻塞或者喚醒一個(gè)Java線程需要操作系統(tǒng)切換CPU?狀態(tài)來完成,這種狀態(tài)轉(zhuǎn)換?需要耗費(fèi)處理器時(shí)間,需要的朋友可以參考下
    2023-10-10
  • 在java代碼中獲取JVM參數(shù)的方法

    在java代碼中獲取JVM參數(shù)的方法

    下面小編就為大家?guī)硪黄趈ava代碼中獲取JVM參數(shù)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01

最新評(píng)論

洛川县| 桓仁| 西乡县| 日照市| 永和县| 北京市| 文安县| 平顶山市| 沂源县| 凭祥市| 广灵县| 旌德县| 阿勒泰市| 通河县| 翁源县| 拉萨市| 孟津县| 吉隆县| 麻江县| 民乐县| 桐庐县| 嘉善县| 怀仁县| 亚东县| 资兴市| 上高县| 大庆市| 穆棱市| 阳曲县| 江安县| 册亨县| 枣阳市| 静乐县| 鹿泉市| 韶山市| 利川市| 铁岭市| 新津县| 敖汉旗| 南宁市| 秭归县|