Hashtable和HashMap和ConcurrentHashMap

684 查看

1. 数据结构

都是数组+拉链实现的哈希表,但是具体实现上差别大了

2. 并发

Hashtable全表锁
HashMap多线程不安全,需要自己封装
ConcurrentHashMap加细粒度锁,读不加锁,如果读到空值再加锁。注意这三个关键字final,transient,volatile

3. null

Hashtable不允许用 null作为键和值
HashMap允许全局最多一个null键,但是允许无数个null值
ConcurrentHashMap不允许用 null作为键和值

参考文档
http://blog.csdn.net/kingzone_2008/article/details/8179701
http://zhangshixi.iteye.com/blog/672697
http://ifeve.com/concurrenthashmap/