`
aa87963014
  • 浏览: 154828 次
  • 性别: Icon_minigender_1
  • 来自: 布尼塔尼亚
社区版块
存档分类
最新评论

ConcurrentHashMap真的有必要吗

 
阅读更多

ConcurrentHashMap真的有必要吗,很多时候我们用ConcurrentHashMap来保证操作map的过程达到线程安全,

但是跟多的时候map是用来存储临时数据例如User信息

 

假设在一个单例类里面设置了一个共享变量map作为存储User的集合,

 

你还有一个方法是用来操纵map里面的user例如:

 

public void a(){
  User user=map.get("1");

  user.xxxxxxx

  Thread.sleep(1000*5);

  map.put("1",user);

}

 为了明显看到效果,加上了线程sleep 5秒,a方法是非线程安全的。

 

我想知道的是,在这种情况下,这个map是否是线程安全有什么关系?ConcurrentHashMap能保证put、get操纵达到线程安全,但是只能局限于自身,对于这个方法、业务来说打不到线程安全的要求,map就算是线程安全的又有什么意义?

 

我的意思就好像一个球队输了,就算其中一个球员表现很抢眼又有什么意义?你说呢?

 

分享到:
评论

相关推荐

    ConcurrentHashMap之实现细节

    为了避免这种情况,`ConcurrentHashMap`会在必要的时候重新哈希,以确保数据能够更均匀地分布在各个段中。 #### 五、示例代码分析 以下是一些关键的示例代码: ```java /** * The segments, each of which is a ...

    java7-8中的 HashMap和ConcurrentHashMap全解析.pdf

    在Java 7和8中,HashMap和ConcurrentHashMap是两种重要的数据结构,分别用于非线程安全和线程安全的键值对存储。本篇文章将深入解析这两种数据结构的内部...了解这些细节有助于开发者在实际应用中选择合适的数据结构。

    一文让你彻底理解JavaHashMap和ConcurrentHashMap

    本篇主要想讨论ConcurrentHashMap这样一个并发容器,在正式开始之前我觉得有必要谈谈HashMap,没有它就不会有后面的ConcurrentHashMap。众所周知HashMap底层是基于数组+链表组成的,不过在jdk1.7和1.8中具体实现稍有...

    Java 多线程与并发(13-26)-JUC集合- ConcurrentHashMap详解.pdf

    这意味着最多可以有16个线程同时写入不同的Segment,从而实现了并行度。Segment内部采用了类似`HashMap`的数据结构,当需要插入元素时,首先通过哈希算法确定元素所在的Segment,然后对该Segment进行加锁,确保在...

    java各个Map的区别.doc

    ConcurrentHashMap 不像 Hashtable 那样在每个操作上都加锁,而是仅在必要时进行锁定,从而提高了并发性能。检索操作(如 get)通常是无阻塞的,可以在更新操作进行的同时进行,但这些操作的结果可能会受到并发更新...

    并行环境下Java哈希机制的对比及重构.zip

    然而,即使有了ConcurrentHashMap,也并不意味着可以一劳永逸。在特定的并行环境下,如线程竞争激烈或数据分布不均时,可能需要进一步优化。这涉及到哈希函数的选择、负载因子的调整、甚至重新设计数据结构。例如,...

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

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

    jdk1.8,java必备

    如果你是一名Java开发者,掌握JDK1.8的新特性是非常必要的。提供的"jdk-8u291-windows-x64.exe"文件是Windows平台上的JDK1.8安装程序,可以通过它来安装和使用JDK1.8。至于"756231"可能是错误的文件名或者不完整的...

    sesvc.exe 阿萨德

    本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。 HashMap 众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 jdk...

    Map集合的继承关系图.pdf

    在Java编程语言中,集合框架是提供了一个设计用于存储对象集合的接口和类。Map集合是一个非常重要的部分,它是以键值对(key-value pairs)的形式...了解这些类的特性和行为对于编写高效且健壮的Java程序是十分必要的。

    JCS所需的资源包 concurrent.jar

    同时,理解JCS的配置文件格式和选项也是必要的,这有助于根据具体场景调整缓存行为,如设置缓存容量、过期时间、序列化策略等。 总的来说,`concurrent.jar` 是Java并发编程和缓存管理的重要工具,而JCS是一个强大...

    Java集合类API.pdf

    Java 7包含了58种不同的集合实现,每种都有其特定的用途和性能特征,因此选择合适的集合类对于优化程序性能至关重要。 在选择集合类时,首要考虑的是其是否符合应用程序的需求。例如,LinkedList适合于需要频繁进行...

    java面试总结

    此外,了解不同的数据库类型(例如关系型数据库和非关系型数据库)以及它们的适用场景也是有必要的。 操作系统是面试中的另一个重点。面试者应该对进程管理、内存管理、文件系统有基本的了解,同时掌握操作系统的...

    实战Java高并发程序设计-试读

    通过阅读这本书,你可以对Java并发编程有更深入的理解,掌握必要的理论知识和实践经验,从而在实际项目中编写出更加稳定、高效的并发程序。如果你对此感兴趣,可以在作者的博客上跟踪他的阅读笔记,获取更多深入的...

    类似QQ的聊天软件JAVA版源码(附设计文档)

    1. **JAVA编程基础**:整个项目是用JAVA语言编写的,因此,对JAVA的基础语法、面向对象编程、异常处理、多线程以及集合框架等有深入理解是必要的。 2. **网络编程**:即时通讯软件的核心在于网络通信,项目中会涉及...

    Java 实例 - 状态监测源代码+详细指导教程.zip

    8. **报警与通知**:当监测到异常状态时,设置报警和通知机制是必要的。可以集成如Prometheus、Grafana等工具来可视化监控数据,并配置阈值报警,通过邮件、短信或其他方式及时通知开发者。 9. **代码调试技巧**:...

    阿里巴巴java开发规范手册-Java.zip

    - 使用ArrayList、HashSet、HashMap时,要考虑线程安全问题,必要时使用CopyOnWriteArrayList、ConcurrentHashMap等线程安全的集合。 - 避免使用迭代器进行元素删除,推荐使用Iterator的remove()方法。 7. **设计...

    java面试题,ava核心知识 集合框架、JVM机制、多线程与并发框架、网络协议、SSM框架、MySQL、分布式、微服务等

    6. **MySQL**:MySQL是一种流行的开源关系型数据库管理系统,掌握SQL语句(SELECT、INSERT、UPDATE、DELETE),索引的使用,事务处理(ACID特性),以及存储引擎(InnoDB支持行级锁定,MyISAM适合只读场景)是必要的...

    2024秋招java开发、测试开发最全八股文

    理解软件开发生命周期,熟悉缺陷管理工具如JIRA,以及性能测试工具如JMeter也是必要的。 综合上述内容,对于2024年秋季招聘的Java开发者和测试开发者,应具备扎实的Java基础知识,包括面向对象设计、异常处理、集合...

Global site tag (gtag.js) - Google Analytics