美文网首页
精致的缓存实现——simpleCache

精致的缓存实现——simpleCache

作者: d1ab10 | 来源:发表于2016-12-04 17:22 被阅读471次
import java.util.Map;
import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public final class SimpleCache<K,V> {    
  private final Lock lock = new ReentrantLock();    
  private final int maxCapacity;    
  private final Map<K,V> eden;    
  private final Map<K,V> perm;

  public SimpleCache(int maxCapacity) {
        
    this.maxCapacity = maxCapacity;        
    this.eden = new ConcurrentHashMap<K,V>(maxCapacity);        
    this.perm= new WeakHashMap<K,V>(maxCapacity);

  }    
  public V get(K k) {        
    V v = this.eden.get(k);
     if (v == null) {
         lock.lock();
            try{                
                v = this.perm.get(k);            
            }finally{                
                lock.unlock();            
            }            
              if (v != null) {
                  this.eden.put(k, v);            
            }        
      }        
      return v;    
  }    
  public void put(K k, V v) {        
    if (this.eden.size() >= maxCapacity) {            
      lock.lock();            
        try{                
             this.perm.putAll(this.eden);            
        }finally{                
              lock.unlock();           
        }            
        this.eden.clear();        
    }        
    this.eden.put(k, v);    
  }
}

相关文章

  • 精致的缓存实现——simpleCache

  • gobox中的simplecache和levelcache

    今天来说下gobox中的simplecache和levelcache simplecache simplecach...

  • 自己实现缓存

    LRU缓存实现(Java)java实现本地缓存

  • Spring的缓存机制

    Spring的缓存机制启用Spring缓存Spring内置缓存实现的配置EhCache缓存实现的配置使用@Cach...

  • MyBatis组件之缓存实现及使用

    一 .概述 先讲缓存实现,主要是mybatis一级缓存,二级缓存及缓存使用后续补充 Mybatis缓存的实现是基于...

  • SDWebImage的实现原理

    SDWebImage底层实现有沙盒缓存机制,主要由三块组成 内存图片缓存内存操作缓存磁盘沙盒缓存 内部实现过程: ...

  • 缓存基本概念

    缓存 cache 缓存接口,定义缓存操作,实现有:RedisCache、EhCacheCache、Concurre...

  • Springboot与缓存

    缓存 cache 缓存接口,定义缓存操作,实现有:RedisCache、EhCacheCache、Concurre...

  • Android-DiskLruCache

    DiskLruCache用于实现磁盘缓存,它通过将缓存文件写入文件系统实现缓存的效果。使用前先添加依赖 该方法用于...

  • 聊聊缓存

    本地缓存:mybatis实现:装饰器模式实践 PerpetualCache:永久缓存:通过HashMap实现最大容...

网友评论

      本文标题:精致的缓存实现——simpleCache

      本文链接:https://www.haomeiwen.com/subject/lbvhmttx.html