`

一个简单的Java缓存实现

 
阅读更多

原文地址: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缓存原理,简单的缓存池实现。

    java map 实现缓存技术

    总的来说,Java Map提供了一种简单而有效的方式实现缓存技术。开发者可以根据具体需求选择合适的Map实现,并结合各种策略来管理和维护缓存,以提升系统的响应速度和效率。在实际应用中,还可以考虑使用第三方库如...

    Java利用ConcurrentHashMap实现本地缓存demo

    Java利用ConcurrentHashMap实现本地缓存demo; 基本功能有缓存有效期、缓存最大数、缓存存入记录、清理线程、过期算法删除缓存、LRU算法删除、获取缓存值等功能。 复制到本地项目的时候,记得改包路径哦~

    java 缓存的简单实现

    java缓存实现demo完整实例,很不错的资源,欢迎大家来下载学习。/** * 此函数接受一个对象列表,数目不定,opration:表是触发的事件 * eg:change;fnClear:表示初始化下拉框。var_args表示多个下拉框... */ ...

    java 通过文件实现缓存

    java实现缓存可以通过读取本地文件的方式实现,改代码就是通过读取本地文件实现缓存的简单例子

    Java缓存技术的使用实例

    通过这个实例,你可以学习到如何设计和实现一个简单的Java缓存系统,并了解缓存技术在实际项目中的应用。同时,这也是一个很好的起点,可以进一步研究和探索更先进的缓存解决方案,如使用第三方库Ehcache或集成...

    spring简单的缓存

    参考链接提供的CSDN博客文章《[Spring简单缓存实现](http://blog.csdn.net/maoyeqiu/article/details/50238035)》中,作者详细介绍了如何在Spring项目中实现缓存,包括配置、注解使用以及注意事项,是一个很好的学习...

    分页缓存

    这里我们以Ehcache为例,讨论如何构建一个简单的分页缓存系统。 1. **Ehcache配置**:首先,我们需要在项目中引入Ehcache的依赖,并配置一个缓存策略。在`ehcache.xml`配置文件中,定义一个缓存区域,设置其大小、...

    Java实现一个简单的缓存方法

    在Java中,我们可以自己实现一个简单的缓存系统,以满足基本的缓存需求。以下是一个简化的实现过程。 首先,我们需要创建一个表示缓存对象的类。这个类应该包含存储的数据、数据的有效期以及最后更新的时间。如`...

    (Java 综合练习)简单的缓存同步(使用Thread,Timer)

    本实践项目是关于如何使用线程(Thread)和定时器(Timer)来实现一个简单的缓存同步机制。我们将探讨以下几个关键知识点: 1. **线程基础**: - 在Java中,`Thread`类是线程的基类,通过继承或实现`Runnable`接口...

    JAVA缓存技术深入了解

    - **Ehcache**:是一个广泛使用的开源Java缓存解决方案,支持本地缓存和分布式缓存。它提供了内存和磁盘存储,以及过期策略、缓存预热等功能。 - **Guava Cache**:Google的Guava库提供了一个轻量级的缓存解决方案...

    高速缓存实现源码

    本项目通过源码实现了一个简单的高速缓存,展示了其在多线程并发环境下的性能优势。 在Java中,高速缓存的实现通常依赖于数据结构如哈希表(HashMap)或并发容器如ConcurrentHashMap。哈希表提供快速的查找和插入...

    Java缓存技术深入了解

    - **Ehcache**: 是一个广泛使用的开源Java缓存系统,支持内存和磁盘存储,支持缓存的持久化。 - ** caffeine**: 是一个高性能的本地缓存库,设计灵感来源于Guava Cache,但提供了更优化的性能和配置选项。 3. **...

    java缓存类

    Ehcache提供了一个简单的API,开发者可以通过添加、删除和查询缓存项来管理数据。它还支持过期策略,例如基于时间或者访问频率的自动清理。 Guava Cache是Google Guava库的一部分,提供了一个更高级的缓存解决方案...

    java Map实现的cache manager,定时清除缓存里面的值

    java Map实现的cache manager,定时清除缓存里面的值,使数据一致保持最新

    Java 中常用缓存Cache机制的实现

    二、内存缓存,也就是实现一个类中静态 Map,对这个 Map 进行常规的增删查。 在 Java 中,缓存机制的实现可以通过各种方式,例如使用 HashMap、TreeMap、LinkedHashMap 等数据结构来存储缓存对象。下面是一个简单的...

    java缓存工具 SimpleCache_java_缓存_

    5. **扩展性**:作为一个优秀的缓存工具,SimpleCache 可能允许用户自定义缓存实现,或者与其他缓存解决方案(如 Ehcache、Guava Cache)集成。 6. **缓存失效通知**:当缓存中的数据被更新或删除时,SimpleCache ...

    详解java缓存ppt讲义

    Java缓存技术在企业级开发中扮演着至关重要的角色,主要目的是提高系统性能,减少不必要的计算和I/O操作。本文将深入探讨缓存的概念、作用、类型以及在Java环境下的应用。 缓存,简单来说,就是高速缓冲存储器,它...

    java 缓存插件ehcache 应用实例

    这个配置定义了一个名为`exampleCache`的缓存区域,最大内存中元素数量为1000,非永久性缓存,元素空闲120秒后过期,存活120秒后过期,数据存储在系统临时目录。 四、Ehcache API使用 1. **创建缓存管理器**: ```...

Global site tag (gtag.js) - Google Analytics