一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java緩存池代碼實例詳解

Java緩存池代碼實例詳解

2020-09-14 14:08蝸牛- Java教程

本篇文章主要介紹了Java實現簡單的緩存方法實例,需要的朋友可以參考下

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

CacheItem  緩存實體類

CachePool  緩存池

Student  學生實體類

MainTest  主測試類

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

緩存實體類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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

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

原文鏈接:http://blog.csdn.net/magi1201/article/details/60964107

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 操黄| 福利片福利一区二区三区 | 午夜香蕉 | 办公室恋情在线观看 | 性欧美13处丶14处 | 国产午夜一区二区在线观看 | xxxxxx性受 | 色哟哟哟在线精品观看视频 | 极品美女a∨片在线看 | 亚洲欧美日韩精品 | 白丝萝莉h | 欧美香蕉视频 | 精品一区二区三区在线播放 | 国内精品伊人久久大香线焦 | 俄罗斯一级淫片bbbb | 美国女艳星brandilove | 暖暖日本在线观看免费 | 亚洲精品久久久久久婷婷 | 亚洲国产第一区二区香蕉日日 | 国产成人综合一区人人 | 欧洲兽皇 | 欧美国产日韩综合 | 国产一线天 | 精品国产成人a区在线观看 精品高潮呻吟99AV无码视频 | 久久se视频精品视频在线 | 国产精品嫩草影院一二三区入口 | 日本高清在线精品一区二区三区 | 北条麻妃黑人正在播放 | 亚洲精品6久久久久中文字幕 | 成年人在线视频观看 | 9久热久爱免费精品视频在线观看 | 四虎影视国产精品婷婷 | 亚洲欧美国产精品完整版 | 国产二区视频在线观看 | 国产香蕉97碰碰久久人人 | 欧美精品99久久久久久人 | 免费看3d小舞被躁视频网站 | 日韩视频免费观看 | 国产精品视频一区二区三区 | 色老板在线 | 美女的隐私脱裤子无遮挡 |