上一章节,分析了经常使用的Map集合,随着互联网多线程并发的场景愈来愈多,原始的数据结构已经没法知足真是的场景需求,因此这种线程安全的集合就显得很是重要。这里介绍一下ConcurrentHashMap和HashTable两种线程安全的数据集合。 安全
那么在分析以前咱们首先提出一个问题ConcurrentHashMap和HashTable在作线程安全时的区别?数据结构
这里介绍一个比较全面分析源码的帖子:http://blog.csdn.net/zhangerqing/article/details/8193118多线程
总结:并发
一、HashTable与HashMap采用的数据结构一致。只不过HashTable是线程安全的,在主要的操做方法上都实现了synchronized同步.net
二、HashTable不容许null的key值存储,若是存储后会报NullPointerException异常线程
三、ConcurrentHashMap是线程安全的HashMapblog
四、HashTable和ConcurrentHashMap的区别在于实现锁的机制不同,ConcurrentHashMap锁的是哈希表中的key,而HashTable锁的是整个哈希表,以下图(侵删)同步