原文地址:http://www.oschina.net/code/snippet_55577_3887
package test; 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> longterm; public SimpleCache(int maxCapacity) { this.maxCapacity = maxCapacity; this.eden = new ConcurrentHashMap<K,V>(maxCapacity); this.longterm = new WeakHashMap<K,V>(maxCapacity); } public V get(K k) { V v = this.eden.get(k); if (v == null) { lock.lock(); try{ v = this.longterm.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.longterm.putAll(this.eden); }finally{ lock.unlock(); } this.eden.clear(); } this.eden.put(k, v); } }
相关推荐
java缓存原理,简单的缓存池实现,java缓存原理,简单的缓存池实现,java缓存原理,简单的缓存池实现,java缓存原理,简单的缓存池实现。
总的来说,Java Map提供了一种简单而有效的方式实现缓存技术。开发者可以根据具体需求选择合适的Map实现,并结合各种策略来管理和维护缓存,以提升系统的响应速度和效率。在实际应用中,还可以考虑使用第三方库如...
Java利用ConcurrentHashMap实现本地缓存demo; 基本功能有缓存有效期、缓存最大数、缓存存入记录、清理线程、过期算法删除缓存、LRU算法删除、获取缓存值等功能。 复制到本地项目的时候,记得改包路径哦~
java缓存实现demo完整实例,很不错的资源,欢迎大家来下载学习。/** * 此函数接受一个对象列表,数目不定,opration:表是触发的事件 * eg:change;fnClear:表示初始化下拉框。var_args表示多个下拉框... */ ...
java实现缓存可以通过读取本地文件的方式实现,改代码就是通过读取本地文件实现缓存的简单例子
通过这个实例,你可以学习到如何设计和实现一个简单的Java缓存系统,并了解缓存技术在实际项目中的应用。同时,这也是一个很好的起点,可以进一步研究和探索更先进的缓存解决方案,如使用第三方库Ehcache或集成...
参考链接提供的CSDN博客文章《[Spring简单缓存实现](http://blog.csdn.net/maoyeqiu/article/details/50238035)》中,作者详细介绍了如何在Spring项目中实现缓存,包括配置、注解使用以及注意事项,是一个很好的学习...
这里我们以Ehcache为例,讨论如何构建一个简单的分页缓存系统。 1. **Ehcache配置**:首先,我们需要在项目中引入Ehcache的依赖,并配置一个缓存策略。在`ehcache.xml`配置文件中,定义一个缓存区域,设置其大小、...
在Java中,我们可以自己实现一个简单的缓存系统,以满足基本的缓存需求。以下是一个简化的实现过程。 首先,我们需要创建一个表示缓存对象的类。这个类应该包含存储的数据、数据的有效期以及最后更新的时间。如`...
本实践项目是关于如何使用线程(Thread)和定时器(Timer)来实现一个简单的缓存同步机制。我们将探讨以下几个关键知识点: 1. **线程基础**: - 在Java中,`Thread`类是线程的基类,通过继承或实现`Runnable`接口...
- **Ehcache**:是一个广泛使用的开源Java缓存解决方案,支持本地缓存和分布式缓存。它提供了内存和磁盘存储,以及过期策略、缓存预热等功能。 - **Guava Cache**:Google的Guava库提供了一个轻量级的缓存解决方案...
本项目通过源码实现了一个简单的高速缓存,展示了其在多线程并发环境下的性能优势。 在Java中,高速缓存的实现通常依赖于数据结构如哈希表(HashMap)或并发容器如ConcurrentHashMap。哈希表提供快速的查找和插入...
- **Ehcache**: 是一个广泛使用的开源Java缓存系统,支持内存和磁盘存储,支持缓存的持久化。 - ** caffeine**: 是一个高性能的本地缓存库,设计灵感来源于Guava Cache,但提供了更优化的性能和配置选项。 3. **...
Ehcache提供了一个简单的API,开发者可以通过添加、删除和查询缓存项来管理数据。它还支持过期策略,例如基于时间或者访问频率的自动清理。 Guava Cache是Google Guava库的一部分,提供了一个更高级的缓存解决方案...
java Map实现的cache manager,定时清除缓存里面的值,使数据一致保持最新
二、内存缓存,也就是实现一个类中静态 Map,对这个 Map 进行常规的增删查。 在 Java 中,缓存机制的实现可以通过各种方式,例如使用 HashMap、TreeMap、LinkedHashMap 等数据结构来存储缓存对象。下面是一个简单的...
5. **扩展性**:作为一个优秀的缓存工具,SimpleCache 可能允许用户自定义缓存实现,或者与其他缓存解决方案(如 Ehcache、Guava Cache)集成。 6. **缓存失效通知**:当缓存中的数据被更新或删除时,SimpleCache ...
Java缓存技术在企业级开发中扮演着至关重要的角色,主要目的是提高系统性能,减少不必要的计算和I/O操作。本文将深入探讨缓存的概念、作用、类型以及在Java环境下的应用。 缓存,简单来说,就是高速缓冲存储器,它...
这个配置定义了一个名为`exampleCache`的缓存区域,最大内存中元素数量为1000,非永久性缓存,元素空闲120秒后过期,存活120秒后过期,数据存储在系统临时目录。 四、Ehcache API使用 1. **创建缓存管理器**: ```...