文章目录
ConcurrentHashMap介绍
哈希表就是一种以键-值(key -indexed) 存储数据的结构,我们只要输入待查 找的值即 key,即可查找到其对应的值。
哈希表是一种非常高效的数据结构 ,设计优良的哈希函数可以使其上的增删改查操作达到O(1)级别。Java为我们提供了一个现成的哈希结构 ,那就是HashMap类 ,在前面的文章中我曾经介绍过HashMap类 ,知道它的所有方法都未进行同步 ,因此在多线程环境中是不安全的。
为此 ,Java为我们提供了另外一个HashTable类 ,它对于多线程同步的处理非常简单粗暴 ,那就是在HashMap的基础上对其所有方法都使用synchronized关键字进行加锁。
例如下面截取的几个方法:
这种方法虽然简单 ,但导致了一个问题 ,那就是在同一时间内只能由一个线程去操作哈希表。即使这些线程都只是进行读操作也必须要排队 ,这在竞争激烈的多线程环境中极为影响性能。本篇介绍的ConcurrentHashMap就是为了解决这个问题的 ,它的内部使用分段锁将锁进行细粒度化 ÿ