• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

基于Java实现缓存Cache的深入分析

java 搞代码 4年前 (2022-01-05) 29次浏览 已收录 0个评论

本篇文章是对Java实现缓存Cache进行来源gaodai#ma#com搞*代#码网了详细的分析介绍,需要的朋友参考下

原理是使用LinkedHashMap来实现,当缓存超过大小时,将会删除最老的一个元组。
实现代码如下所示

代码如下:
import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache {
 public static class CachedData {
  private Object data = null;
  private long time = 0;
  private boolean refreshing = false;
  public CachedData(Object data) {
   this.data = data;
   this.time = System.currentTimeMillis();
  }
  public Object getData() {
   return data;
  }
  public long getTime() {
   return time;
  }

  public void setTime(long time) {
   this.time = time;
  }

  public boolean getRefreshing() {
      return refreshing;
  }

  public void setRefreshing(boolean b) {
      this.refreshing = b;
  }
 }
 protected static class CacheMap extends LinkedHashMap {
  protected int maxsize = 0;
  public CacheMap(int maxsize) {
   super(maxsize * 4 / 3 + 1, 0.75f, true);
   this.maxsize = maxsize;
  }
  protected boolean removeEldestEntry(Map.Entry eldest) {
   return size() > this.maxsize;
  }
 }
 protected CacheMap map = null;
 public LRUCache(int size) {
  this.map = new CacheMap(size);
 }
 public synchronized void set(Object key, Object value) {
  map.remove(key);
  map.put(key, new CachedData(value));
 }
 public synchronized void remove(Object key) {
  map.remove(key);
 }
 public synchronized CachedData get(Object key) {
  CachedData value = (CachedData) map.get(key);
  if (value == null) {
   return null;
  }
  map.remove(key);
  map.put(key, value);

  return value;
 }

 public int usage() {
  return map.size();
 }

 public int capacity() {
  return map.maxsize;
 }

 public void clear() {
  map.clear();
 }
}

以上就是基于Java实现缓存Cache的深入分析的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:基于Java实现缓存Cache的深入分析

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址