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

路边有个小男孩

路边有个小男孩

2016-02-19 09:20

今天图老师小编给大家展示的是基于Java实现缓存Cache的深入分析,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!
原理是使用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();
 }
}

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
基于Java实现缓存Cache的深入分析

基于java内部类作用的深入分析

编程语言 网络编程
基于java内部类作用的深入分析

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

深入分析java文件路径的详解

编程语言 网络编程
深入分析java文件路径的详解

深入分析Java内存区域的使用详解

编程语言 网络编程
深入分析Java内存区域的使用详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

java/word+fusionchart生成图表深入分析

编程语言 网络编程
java/word+fusionchart生成图表深入分析

Java UrlRewriter伪静态技术运用深入分析

编程语言 网络编程
Java UrlRewriter伪静态技术运用深入分析

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

不错的JS中变量相关的细节分析

不错的JS中变量相关的细节分析

javascript据option的value值快速设定初始的selected选项

javascript据option的value值快速设定初始的selected选项
下拉加载更多内容 ↓