A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 庭院深深深几许 金牌黑马   /  2019-4-18 13:59  /  782 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

20180111114748245.png

  ConcurrentHashMap使用场景
  1:ConcurrentHashMap的使用场景是高并发,可是并不能确保线程安全,而同步的HashMap和HashMap的是锁住整个容器,而加锁之后ConcurrentHashMap不需要锁住整个容器,只需要锁住对应的Segment就好了,所以能够确保高并发同步拜访,提升了功率。
  2:能够多线程写。
  ConcurrentHashMap把HashMap分红若干个Segmenet
  1.get时,不加锁,先定位到segment然后在找到头结点进行读取操作。而value是volatile变量,所以能够确保在竞争条件时确保读取最新的值,如果读到的value是null,则可能正在修正,那么就调用ReadValueUnderLock函数,加锁确保读到的数据是正确的。
  2.Put时会加锁,一概添加到hash链的头部。
  3.Remove时也会加锁,由于next是final类型不行改动,所以有必要把删除的节点之前的节点都仿制一遍。
  4.ConcurrentHashMap答应多个修正操作并发进行,其关键在于使用了锁别离技术。它使用了多个锁来操控对Hash表的不同Segment进行的修正。
  ConcurrentHashMap的使用场景是高并发,可是并不能确保线程安全,而同步的HashMap和HashTable的是锁住整个容器,而加锁之后ConcurrentHashMap不需要锁住整个容器,只需要锁住对应的segment就好了,所以能够确保高并发同步拜访,提升了功率。
  ConcurrentHashMap能够确保每一次调用都是原子操作,可是并不确保屡次调用之间也是原子操作。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马