荣新IT培训中心
全国咨询热线:400-1335-066
您现在的位置:首页>行业新闻 > 正文

简单讲述ConcurrentHashMap

时间:2018-01-11 11:18:49 来源:荣新IT教育培训 作者:荣新科技
今天来聊一聊关于ConcurrentHashMap的话题,昨天荣新科技和一位已经工作了的同学简单的聊了聊,现在发出来给大家分享下。
简单讲述ConcurrentHashMap
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能够确保每一次调用都是原子操作,可是并不确保屡次调用之间也是原子操作。
文章源自荣新科技官网:www.vfast.com.cn欢迎访问,转载需注明出处