package common;
import java.util.LinkedHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
*
* @Title: LRUCache.java
* @Copyright: Copyright (c) 2011
* @Description: <br>LRUCache 本地缓存
* <br>
* @Company: renren.com
* @Created on 2014-1-14 下午1:25:55
* @author youle.heng
*/
public class LRUCache <K, V> extends LinkedHashMap<K, V> {
private static final long serialVersionUID = -8021134033779621716L;
private final int maxCapacity;
private static final float DEFAULT_LOAD_FACTOR = 0.75f;
private final Lock lock = new ReentrantLock();
public LRUCache(int maxCapacity) {
super(maxCapacity, DEFAULT_LOAD_FACTOR, true);
this.maxCapacity = maxCapacity;
}
@Override
protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
return size() > maxCapacity;
}
/**
* Weather contains someone Object according to a key
* @param key
*/
@Override
public boolean containsKey(Object key) {
lock.lock();
try {
return super.containsKey(key);
} finally {
lock.unlock();
}
}
/**
* Get one Object according to a key
* @param key
*/
@Override
public V get(Object key) {
lock.lock();
try {
return super.get(key);
} finally {
lock.unlock();
}
}
/**
* Put an Object to cache
* @param key,value
*/
@Override
public V put(K key, V value) {
lock.lock();
try {
return super.put(key, value);
} finally {
lock.unlock();
}
}
/**
* The cache's size
*/
public int size() {
lock.lock();
try {
return super.size();
} finally {
lock.unlock();
}
}
/**
* clear the cache
*/
public void clear() {
lock.lock();
try {
super.clear();
} finally {
lock.unlock();
}
}
/**
* Delete one Object from cache
*
* @param key
*/
public void delete(Object key) {
lock.lock();
try {
super.remove(key);
} finally {
lock.unlock();
}
}
}
new 一个能存储50个值的LRUCache对象
LRUCache<String,String> mc = new LRUCache<String,String>(50);
相关推荐
LRUCache(Least Recently Used Cache)是一种常用的缓存淘汰策略,它基于“最近最少使用”的原则,当缓存满时,会优先淘汰最近最不常使用的数据。在Java中,虽然标准库没有直接提供LRUCache,但我们可以通过自定义...
`LruCache`是Android SDK提供的一种基于最近最少使用(Least Recently Used)算法的内存缓存机制,常用于图片、数据等对象的缓存,以减少磁盘读取和网络加载的次数。本文将详细介绍如何在Android应用中使用`LruCache...
`LruCache`是Android SDK提供的一种内存缓存机制,它可以帮助我们优化应用程序的性能,减少对内存的消耗,提升用户体验。本文将深入探讨如何使用基于`LruCache`的图片加载工具类在ListView中实现图片缓存。 首先,`...
`LruCache`是Android SDK提供的一种基于最近最少使用(Least Recently Used)算法的内存缓存机制。本篇文章将深入探讨`LruCache`的原理、使用方法以及在实际应用中的注意事项。 首先,我们需要理解`LruCache`的工作...
"LruCache缓存网络图片"这个主题主要涉及到Android内存缓存的一种实现方式——LRU(Least Recently Used)最近最少使用算法。LRUCache是Android SDK提供的一种基于LRU算法的内存缓存工具,它被广泛应用于存储像图片...
### Android LRUCache机制详解 #### 一、LRUCache简介 在Android开发过程中,缓存技术是一项重要的优化手段,可以显著提升应用性能并改善用户体验。LRUCache(Least Recently Used Cache,最近最少使用缓存)是一种...
本篇文章将深入探讨如何使用LRUCache来解决Android图片墙中的OOM问题。 一、Android OOM简介 当应用程序请求的内存超过系统分配的最大内存时,就会发生OOM。在Android中,每个应用都有自己的Dalvik虚拟机实例,其...
本文将深入探讨如何使用`LruCache`和`DiskLruCache`实现一个二级缓存的自定义`ImageLoader`。 `LruCache`是Android SDK提供的内存缓存解决方案,全称为"Least Recently Used Cache"(最近最少使用缓存)。它的原理...
《PhotosWallDemo结合LruCache和DiskLruCache在Android中的应用详解》 在Android开发中,优化内存管理和数据缓存是提升应用性能的关键环节。本文将深入探讨一个名为PhotosWallDemo的项目,该项目巧妙地结合了...
本DEMO深入探讨了三种实现帧动画的方法,并结合LruCache内存缓存策略来优化性能,防止因大量图片加载导致的内存溢出(OOM)问题。 一、FrameAnimation+xml方式 在Android中,通过XML资源文件可以方便地创建帧动画。...
在Android系统中,LRUCache是Android SDK提供的一种基于LRU策略的内存缓存工具,主要用于图片、数据库记录等对象的缓存,以提高应用性能。 标题“LruCache缓存demo”指的是一个关于如何使用LRUCache进行缓存操作的...
LRUCache(Least Recently Used Cache)是Android系统提供的一个基于最近最少使用算法(LRU)的内存缓存机制。在Android开发中,特别是在处理大量图片或者数据时,LRUCache可以帮助我们有效地管理内存,避免因内存...
LRUCache(Least Recently Used Cache)是一种常用的缓存淘汰策略,它将最近最少使用的数据优先淘汰。在C++中,实现LRU缓存通常需要利用STL中的容器,如unordered_map来存储键值对,同时结合双向链表来维护数据的...
在Android开发中,`LruCache`是Google提供的一种基于LRU算法实现的缓存机制,它被广泛应用于图片、数据库查询结果等数据的缓存,以提高应用性能和用户体验。 ### LRU算法原理 LRU算法的基本思想是:当内存空间满时...
异步下载图片,使用LruCache和手机目录缓存,GridView滑动的时候取消下载图片,效果流畅,这里是代码,更多的介绍http://blog.csdn.net/xiaanming/article/details/9825113
`LruCache`是Android SDK提供的一种基于最近最少使用(Least Recently Used, LRU)算法的内存缓存机制,用于高效地管理应用程序的内存资源。本篇文章将深入探讨`LruCache`的工作原理,以及如何在实际项目中使用它。 ...
AsyncTask的使用及ListView的常见优化 asyncTask异步加载数据 使用了LruCache优化图片加载 通过滑动监听提高ListView滑动流畅度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习...
简易单链表增删改查功能实现。新增内容:新增单链表LruCache算法增删改查,对学习LruCache 算法有一定帮助。
这个Demo项目涵盖了多个关键知识点,包括异步加载、网络编程、JSON解析以及LruCache图片缓存策略,这些都是在实际开发中处理数据流和用户体验优化的重要技术。 1. **异步加载**: 在Android中,为了防止UI线程被...
你可以使用它们来创建自定义的LRUCache类,提供Insert、Get、Remove等方法,以支持缓存的操作。 在`cachedemo`文件中,可能包含了LRU缓存的C#实现示例代码,你可以通过查看和学习这个示例来进一步理解和掌握C# LRU...