`
todd_liu
  • 浏览: 66078 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

ConcurrentHashMap应用注意事项

阅读更多
1、public V get(Object key)不涉及到锁,也就是说获得对象时没有使用锁;
2、keySet().iterator()及keys(),获取的Iterator、Enumeration变量是单线程访问安全的,多线程访问时要么生成多个Iterator、Enumeration(通过调用相应的获取方法),要么以ConcurrentHashMap变量为锁进行同步(synchronized该变量);ConcurrentHashMap变量是多线程访问安全的,尽管是多线程访问,多数情况下应该没有锁争用;
3、put、remove方法要使用锁,但并不一定有锁争用,原因在于ConcurrentHashMap将缓存的变量分到多个Segment,每个Segment上有一个锁,只要多个线程访问的不是一个Segment就没有锁争用,就没有堵塞,各线程用各自的锁,ConcurrentHashMap缺省情况下生成16个Segment,也就是允许16个线程并发的更新而尽量没有锁争用;
4、Iterator、Enumeration获得的对象,不一定是和其它更新线程同步,获得的对象可能是更新前的对象,ConcurrentHashMap允许一边更新、一边遍历,未遍历到的key一般能放映value更新;
5、有些情况下这种不一致是允许的,如果需要最大的性能、吞吐量,则正好使用ConcurrentHashMap。

目前只想到能用于缓存无关紧要的信息,对于读写 都须同步的操作,竟然还要加synchronized,悲剧的线程安全
分享到:
评论

相关推荐

    Java开发注意事项

    在深入探讨Java开发注意事项之前,我们首先应当澄清,给定的部分内容似乎包含了非文本或乱码信息,这可能源于文档转换或编码问题。不过,基于标题“Java开发注意事项”及描述“Java开发注意事项,编程人员可以看看哦...

    JAVA面试体系一条龙(含笔试与各种注意事项与标准模板)

    "JAVA面试体系一条龙(含笔试与各种注意事项与标准模板)"这个资源显然旨在帮助求职者全面准备Java面试,涵盖笔试环节以及面试的各种策略和技巧。 一、Java基础知识 在Java面试中,基础扎实是必不可少的。这包括但...

    大型网站应用之海量数据和高并发解决方案总结.docx

    - **注意事项**:合理设计缓存策略,包括缓存数据的选择、更新机制以及故障恢复机制等。 2. **页面静态化技术** - **原理**:将动态生成的内容转换成静态文件,减少服务器端的计算任务。 - **应用场景**:适用...

    Java 高并发九:锁的优化和注意事项详解

    Java高并发编程中,锁的优化与注意事项是关键议题,特别是在多线程环境下,正确地使用锁能够确保程序的正确性和提升系统性能。本文将详细探讨锁优化的思路与方法,虚拟机内的锁优化策略,一个错误使用锁的案例,以及...

    高效的缓存管理解决方案AutoLoadCache.zip

    设计思想及原理使用方法注解(Annotation)说明表达式的应用缓存删除注意事项缓存管理页面与Spring Cache的区别源码阅读已经实现基于aspectj,代码在com.jarvis.cache.aop.aspectj.AspectjAopInterceptor。...

    09、并发容器(Map、List、Set)实战及其原理

    6. **并发容器的使用注意事项**: - 避免不必要的同步:只在必要时才使用线程安全的容器,否则可能会带来额外的性能开销。 - 使用适当的容器:根据场景选择最合适的容器,例如,如果需要频繁遍历,`...

    互联网高频Java后端面试题20道(适合1~3年)V1.0.89.docx

    **注意事项:** - 反射操作通常会降低程序性能。 - 过度使用反射可能导致代码难以理解和维护。 #### 二、RESTful API设计 **知识点概述:** RESTful API是一种基于HTTP协议的设计风格,通过URL表示资源,利用HTTP...

    java1.6JDK

    而"使用说明.txt"可能包含了安装和使用JDK的步骤和注意事项。"安卓游戏下载.url"、"单机游戏下载.url"和"更多软件点击进入.url"看似与Java开发无关,可能是为了提供额外的下载资源或链接。 总之,Java 1.6 JDK是一...

    java面试300讲MD答案课件

    - finalize()方法:其在垃圾回收中的角色和使用注意事项。 4. **多线程**: - 创建线程:Thread类、Runnable接口,以及ExecutorService的使用。 - 线程同步:synchronized关键字、volatile、锁(ReentrantLock、...

    针对于java面试资料.docx

    **注意事项:** - `ThreadLocal` 不适用于解决多个线程间的共享数据问题,主要用于在线程内部保存数据。 - 在使用 `ThreadLocal` 时需注意显式地清理不再使用的变量,尤其是当线程可能重用时。 #### 三、MVCC(多...

    JDK11_DSA_SrcComment:在JDK 11中阅读数据结构和算法(DSA)的注意事项

    版本11是Oracle公司发布的长期支持(LTS)版本,意味着它会得到更长时间的维护和支持,这对于企业级应用来说尤其重要。 数据结构和算法(DSA)是计算机科学的基础,它们在构建高效软件系统中起着至关重要的作用。在...

    jdk 7 64位安装包 方便安装

    - **注意事项**: - 在下载前,请确保您的计算机符合64位JDK的最低系统要求。 - 下载完成后,双击安装包启动安装向导,按照提示完成安装过程。 - 如果在安装过程中遇到问题,建议查阅官方文档或寻求技术支持。 #...

    java性能权威指南高清

    - **Stream API**:分析Stream API在性能优化中的角色,以及注意事项。 通过这本书,读者不仅可以学习到Java性能优化的理论知识,还能获得大量实战经验,提高解决实际问题的能力。无论是初级开发者还是资深工程师...

    阿里巴巴Java开发手册-终极版.zip

    9. **安全性**:提出了关于密码加密、防止SQL注入、XSS攻击等安全方面的注意事项,确保系统的安全性。 10. **单元测试**:倡导编写全面的单元测试,使用JUnit等工具,以确保代码的功能正确性。 11. **持续集成与...

    java JDK1.8版本下载

    **注意事项** 1. **路径中避免空格**:环境变量中的路径应避免包含空格,以免导致问题。 2. **确保JDK版本与应用程序兼容**:不同的Java应用可能有特定的JDK版本要求。 3. **更新PATH顺序**:如果系统中同时存在多...

    java多线程教学视频

    本教学视频将全面深入地探讨Java多线程编程的特点、原理以及实践中的注意事项。 首先,我们要理解什么是线程。线程是操作系统分配CPU时间的基本单位,一个进程可以有多个线程,它们共享同一内存空间,但各自拥有...

    java深入冒险

    了解反射的使用场景和注意事项,避免性能开销。 5. **多线程编程**:深入学习并发编程,包括线程的创建、同步机制(synchronized、Lock)、并发容器(ConcurrentHashMap、BlockingQueue等)以及Future和...

    JDK 1.7 64位

    ### 使用注意事项 - 确保操作系统是64位的,因为这是64位版本的JDK。 - 如果系统中已有其他版本的JDK,可能需要调整环境变量顺序,以确保JDK 1.7成为默认版本。 - 保持JDK的更新,及时修补安全漏洞和错误。 总之,...

    Java高并发编程与JVM性能调优实战 视频教程 下载下载因为太大存百度云盘1.zip

    5. **类加载机制**:双亲委派模型,类加载器的层次结构,以及类加载过程中的注意事项。 6. **性能指标与调优**:CPU使用率、内存利用率、垃圾收集频率等关键指标的监控,以及如何根据这些指标进行系统调优。 课程中...

Global site tag (gtag.js) - Google Analytics