基于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偷钱流符文搭配推荐

基于jni调用时,jvm报错问题的深入分析

编程语言 网络编程
基于jni调用时,jvm报错问题的深入分析

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

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

lolAD刺客新符文搭配推荐

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

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

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

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

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