并发编程(四)__ConcurrentHashMap
? ? ? ? ? ? ? ?? Java 5.0 在 java.util.concurrent 包中提供了多種并發(fā)容器類來(lái)改進(jìn)同步容器
的性能。
? ConcurrentHashMap 同步容器類是Java 5 增加的一個(gè)線程安全的哈希表。對(duì)
與多線程的操作,介于 HashMap 與 Hashtable 之間。內(nèi)部采用“鎖分段”
機(jī)制替代 Hashtable 的獨(dú)占鎖。進(jìn)而提高性能。
? 此包還提供了設(shè)計(jì)用于多線程上下文中的 Collection 實(shí)現(xiàn):
ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、
CopyOnWriteArrayList 和 CopyOnWriteArraySet。當(dāng)期望許多線程訪問(wèn)一個(gè)給
定 collection 時(shí),ConcurrentHashMap 通常優(yōu)于同步的 HashMap,
ConcurrentSkipListMap 通常優(yōu)于同步的 TreeMap。當(dāng)期望的讀數(shù)和遍歷遠(yuǎn)遠(yuǎn)
大于列表的更新數(shù)時(shí),CopyOnWriteArrayList 優(yōu)于同步的 ArrayList。
ConcurrentHashMap在jdk1.5中采用了鎖分段機(jī)制,在jdk1.8中,采用了CAS算法
鎖分段機(jī)制如下,其中復(fù)合操作中,contains()、put()兩個(gè)方法用的而是不同的鎖,多線程的之后仍然會(huì)出現(xiàn)問(wèn)題
?
以下是hashtable會(huì)出現(xiàn)的問(wèn)題,在復(fù)合操作中
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/dreamHighMjc/p/8497194.html
總結(jié)
以上是生活随笔為你收集整理的并发编程(四)__ConcurrentHashMap的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 并发编程(一)__volatile关键字
- 下一篇: 从汉诺塔讲递归的思考方式