`
victorwmh
  • 浏览: 212790 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

Java实现缓存之HashMap及ConcurrentHashMap

    博客分类:
  • java
 
阅读更多

 

最近,在一个项目中需要将大量的键值对数据缓存在内存中,以提高系统的业务处理能力。将数据缓存在内存中的方法有很多,可以使用诸如Memcached之类的分布式内存对象缓存系统,也可以通过持有对象Map类自行实现数据缓存。如何选择取决于业务需求,下面为采用map实现数据缓存前做准备时了解到的一些问题。

 

 

1、java的HashMap高并发问题。

   在高并发的情况下,HashMap可能会出现卡死的情况,原因是HashMap属于非线程安全的,具体的分析可以参看第三点。

   出现高并发操作HashMap的,最好改用ConcurrentHashMap代替,两者的性能比较可参看第二点。

 

2、HashMap和ConcurrentHashMap的并发性能。

   ConcurrentHashMap的性能比同步的HashMap快一倍左右,同步的HashMap和Hashtable的性能相当。

   测试数据参见:http://blog.csdn.net/java2000_net/article/details/3373181

 

3、不正当使用HashMap导致cpu 100%的问题追究。

   过程参见:http://code.alibabatech.com/blog/dev_related_969/hashmap-result-in-improper-use-cpu-100-of-the-problem-investigated.html

 

 

 

分享到:
评论

相关推荐

    Java利用ConcurrentHashMap实现本地缓存demo

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

    java map 实现缓存技术

    在Java中,我们通常使用HashMap、ConcurrentHashMap等Map实现来创建缓存。这些数据结构具有O(1)的平均时间复杂度,能够快速地查找和存储元素,非常适合缓存应用场景。 在给定的描述中提到了"毫秒计算",这涉及到...

    高速缓存实现源码

    在Java中,高速缓存的实现通常依赖于数据结构如哈希表(HashMap)或并发容器如ConcurrentHashMap。哈希表提供快速的查找和插入操作,而ConcurrentHashMap则为多线程环境提供了线程安全的访问。在这个项目中,对比了...

    Java缓存技术的使用实例

    它很可能包含了一个简单的Java缓存实现,可能使用了HashMap或者其他自定义的数据结构来模拟缓存操作。这样的实例通常会包括以下组件: 1. **缓存接口**:定义缓存的基本操作,如put、get、remove和clear。 2. **...

    JAVA的缓存应用介绍

    总的来说,Java缓存的应用是提升系统性能的关键策略之一。了解Java内存体系和有效使用缓存框架,能够帮助开发者创建更高效、更稳定的系统,同时避免因内存管理不当导致的问题。正确设置JVM内存参数和使用内存检查...

    java 数据缓存

    Java中的数据缓存可以手动实现,通常使用HashMap或者ConcurrentHashMap等数据结构。例如,当我们有一个计算密集型或者I/O密集型的方法,我们可以将计算结果存储在内存中,下次调用时直接从缓存中获取,而不是重复...

    java源码:java缓存工具 SimpleCache.zip

    SimpleCache是一个简洁而实用的Java缓存工具,它可以帮助开发者快速实现本地缓存功能。这个压缩包文件“SimpleCache.zip”包含了一个名为“yishh-cache-09860a6”的源码文件,我们可以从中学习到关于Java缓存的基本...

    实现 Java 本地缓存的方法解析

    实现 Java 本地缓存的方法解析 本文主要介绍了实现 Java 本地缓存的方法解析,通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。缓存肯定是项目中必不可少的,市面上有非常多的缓存工具,...

    java课件-HashMap

    HashMap是Java编程语言中一种非常重要的数据结构,它...总的来说,HashMap是Java编程中不可或缺的数据结构,广泛应用于各种场景,如缓存、配置管理等。理解其工作原理和使用注意事项,对于编写高效的Java代码至关重要。

    java使用hashMap缓存保存数据的方法

    本文将详细介绍如何在Java中使用HashMap来实现数据缓存,并通过实例分析其读写操作。 首先,我们创建一个静态的HashMap实例来存储数据,例如: ```java private static final HashMap, XXX> sCache = new HashMap,...

    java高速文件缓存

    Java集合框架提供了多种数据结构,如HashMap、LinkedHashMap、TreeMap等,这些都可以用来构建文件缓存。例如,LinkedHashMap可以实现LRU策略,因为其维护了元素插入的顺序。 ```java Map, byte[]> cache = new ...

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

    Java中的缓存机制是优化应用程序性能的关键技术之一。它通过将频繁访问的数据存储在内存中,使得后续的访问能够快速地获取数据,避免了硬盘I/O操作,显著提高了程序运行速度。本文主要介绍的是Java中一种简单的基于...

    java缓存[借鉴].pdf

    在给定的文件中,我们看到了两种主要的Java缓存实现方式:文件缓存和内存缓存。 文件缓存通常涉及将数据持久化到磁盘上,以便在后续请求时快速加载。这种缓存可以使用不同的格式,如XML、序列化的DAT文件或其他...

    java缓存设计代码

    根据提供的文件信息,我们可以深入分析该Java缓存设计代码中的关键知识点。 ### 一、类结构及作用 #### CacheManager 类 - **包名**: `lhm.hcy.guge.frameset.cache`,这表明该类属于一个较大的项目或框架的一部分...

    java-leetcode题解之第146题LRU缓存.zip

    题目描述的"java_leetcode题解之第146题LRU缓存"是LeetCode网站上的一道经典问题,要求设计一个支持添加、删除和获取操作的数据结构,其内部实现了一个固定大小的LRU缓存。具体接口如下: ```java public interface...

    自定缓存, 在查询修改频率较少的数据,存入缓存中,有帮助提高效率

    在`MyCacheManager.java`中,我们可以预期它会使用HashMap或者ConcurrentHashMap这样的具体实现,以保证线程安全和高效的数据存取。 自定义缓存的设计通常包括以下几个关键部分: 1. **初始化**:初始化缓存容量、...

    hashmap 集合

    在Java编程中,HashMap集合是开发者经常使用的数据结构之一,尤其在处理大量数据时,它的高效性和灵活性使得它成为首选。HashMap是Java集合框架的一部分,位于`java.util`包下,实现了Map接口,用于存储键值对(key-...

    实现了LRU算法的缓存

    可以使用`synchronized`关键字或者`java.util.concurrent`包中的工具,如`ConcurrentHashMap`来实现线程安全的缓存操作。 6. **性能优化**: - 使用`WeakReference`或`SoftReference`可以避免内存泄漏,尤其是在...

    java对象缓冲实现中间件

    2. **ConcurrentHashMap**: 当多线程环境下的缓存需求时,`java.util.concurrent.ConcurrentHashMap`是更优的选择。它提供了线程安全的缓存操作,同时保持较高的并发性能。 3. **WeakReference/SoftReference**: 在...

    Java Cache 模拟器

    在实现这个模拟器的过程中,我们可能会使用Java集合框架,如HashMap或ConcurrentHashMap,以及java.util.concurrent并发工具类。此外,日志框架(如Log4j)可以用来记录操作日志,便于调试和分析。 开发这样的...

Global site tag (gtag.js) - Google Analytics