code1Life

导航

 

0、前言

并发编程中使用hashMap可能导致成簇死循环。而使用线程安全的HashTable效率比较低。基于以上两个原因就有了concurrentHashMap登场的机会了。

1、简述下三者的区别:

(1)线程不安全的hashMap。

多线程环境下,使用hashMap 进行put操作会导致hashmap的Entry链表行程环形数据结构,一旦行程环形数据结构,entry的next节点永远不会空,就会产生死循环获取entry。导致CPU利用率接近100%。

(2)效率低下的hashTable

hashTable容器使用synchronized 来保证线程安全,但是线程竞争激烈的情况下hashTable的效率是比较低下的。(线程1使用put方法添加元素,线程2不但不能使用put方法添加元素也不能使用get方法获取元素)。

(3)ConcurrentHashMap 所分段技术有效提升了并发的访问率。

首先将数据分成一段一段的存储。然后给每段数据配一把锁,当线程占用锁访问其中一段数据的时候其他端数据也是能够被其他线程访问的。

posted on 2020-01-04 11:44  code1Life  阅读(171)  评论(0编辑  收藏  举报