`

concurrent包下的容器之ConcurrentMap

    博客分类:
  • java
 
阅读更多

ConcurrentMap

 

ConcurrentMap包下有两个重要的实现 

ConcurrentHashMap

ConcurrentSkipListMap(支持并发排序功能,弥补ConcurrentHashMap)

ConcurrentHashMap 内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的HashMap,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行,把一个整体分成了16个段(Segment) ,也就是最高支持16个线程的并发修改操作

这也是在多线程场景时减小锁的粒度从而降低锁竞争的一种方案,并且代码中大多共享变量使用volatile关键字声明,目的是第一时间获取修改的内容,性能非常好



 

 

 

  • 大小: 4.1 KB
分享到:
评论

相关推荐

    TBB并发容器 学习笔记

    TBB 并发容器 concurrent_queue concurrent_vector concurrent_hash_map TBB 并发容器 concurrent_queue concurrent_vector concurrent_hash_map TBB 并发容器 concurrent_queue concurrent_vector concurrent_hash_...

    Java 常见并发容器总结

    JDK 提供的这些容器大部分在 `java.util.concurrent` 包中。 - **`ConcurrentHashMap`** : 线程安全的 `HashMap` - **`CopyOnWriteArrayList`** : 线程安全的 `List`,在读多写少的场合性能非常好,远远好于 `...

    javaconcurrent源码-java7-source-code:Java7源码/Concurrency同步

    线程基础/同步sync/并发concurrent/容器/线程池 示例代码 JUC容器的源码解析 Synchronized 同步容器 Concurrent 并发容器: Map/List/Queue 阻塞队列 JUC锁: CountDownLatch 闭锁 AQS 锁的公共类 20180514 String, ...

    【面试系列】并发容器之ConcurrentHashMap

    微信公众号:放开我我还能学 分享知识,共同进步! 看你简历里写了 HashMap,那你说说它存在什么缺点? 线程不安全 迭代时无法修改值 那你有用过线程安全的 Map 吗?...同步包装器 SynchronizedMap

    一文让你彻底理解JavaHashMap和ConcurrentHashMap

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

    Java集合总结

    所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。集合里存存放的元素都是引用数据类型。 数组与集合的区别:(1)数组长度不可变且无法保存具有映射关系的数据;集合类用来保存数量...

    SSO CAS 单点登录实例SSOAuth+SSOWebDemo1+SSOWebDemo2.zip

    之所以要用JDK1.5是因为笔者使用了一个线程安全的高性能的Java集合类 “ConcurrentMap”,只有在JDK1.5中才有。 这三个Web应用完全可以单独部署,它们可以分别部署在 不同的机器,不同的操作系统和不同的J2EE的产品...

    Java基础知识点总结.docx

    无论是工作学习,不断的总结是必不可少的。只有不断的总结,发现问题,弥补不足,才能长久的...java.util.concurrent.locks包下常用的类 326 NIO(New IO) 327 volatile详解 337 Java 8新特性 347 Java 性能优化 362

    Java并发编程实战

    5.1.2 迭代器与Concurrent-ModificationException 5.1.3 隐藏迭代器 5.2 并发容器 5.2.1 ConcurrentHashMap 5.2.2 额外的原子Map操作 5.2.3 CopyOnWriteArrayList 5.3 阻塞队列和生产者-消费者模式 5.3.1 ...

    Java 并发编程实战

    5.1.2 迭代器与Concurrent-ModificationException 5.1.3 隐藏迭代器 5.2 并发容器 5.2.1 ConcurrentHashMap 5.2.2 额外的原子Map操作 5.2.3 CopyOnWriteArrayList 5.3 阻塞队列和生产者-消费者模式 5.3.1 ...

    Java高并发高性能分布式框架从无到有微服务架构设计.doc

    有Guava Cache: 缓存和ConcurrentMap是非常相像的,但是它们也不完全一样。最根本的区别就是,Con currentMap会持有所有添加的对象,直到被显示的移除。而缓存为了限制其内存的使用 ,通常都会配置成可以自动的将...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    java面试宝典

    77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName(String name) {}}这有何错误? 18 79、public class ...

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    然后,我们将 BlazeDS 所需的 jar 包放至 /WEB-INF/lib/。BlazeDS 需要如下的 jar: 清单 3. BlazeDS 依赖的 Jar backport-util-concurrent.jar commons-httpclient.jar commons-logging.jar flex-...

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    然后,我们将 BlazeDS 所需的 jar 包放至 /WEB-INF/lib/。BlazeDS 需要如下的 jar: 清单 3. BlazeDS 依赖的 Jar backport-util-concurrent.jar commons-httpclient.jar commons-logging.jar flex-...

    sesvc.exe 阿萨德

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

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    java基础题 很全面

    50. 简述synchronized和java.util.concurrent.locks.Lock的异同 ? 13 51. 排序都有哪几种方法?请列举。用JAVA实现一个快速排序。 13 52. JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表...

    最新Java面试宝典pdf版

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    Java面试笔试资料大全

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

Global site tag (gtag.js) - Google Analytics