激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 婷婷一区二区三区 | 成年免费视频黄网站在线观看 | 精品一区二区三区中文字幕老牛 | 男女一边摸一边做羞羞视频免费 | 黄色av网站免费看 | 精品一区二区三区毛片 | 午夜亚洲视频 | www.91pron| 欧美成人一区二区三区电影 | 毛片在哪里看 | 黄色免费大片 | 亚洲影视中文字幕 | 午夜精品成人 | 日日操夜夜透 | 免费91在线 | 欧美国产精品久久 | 国产流白浆高潮在线观看 | 欧美激情图区 | 久久成人免费观看 | 成人黄色免费小视频 | www.91成人 | 免费看一级毛片欧美 | 午夜亚洲视频 | h视频在线免费观看 | 久久精品女人天堂av | 欧美成人精品一区二区男人小说 | 日韩av一区二区三区在线观看 | 在线播放免费播放av片 | 在线视频 欧美日韩 | 51色视频 | 操碰 | 美女av在线免费观看 | 91青青| 一本色道精品久久一区二区三区 | 国产免费观看av | 日本综合久久 | 国产日韩精品欧美一区视频 | 无码专区aaaaaa免费视频 | 羞羞网站在线看 | 大学生一级毛片 | 国产二区三区视频 |