1. 数据结构
都是数组+拉链实现的哈希表,但是具体实现上差别大了
2. 并发
Hashtable全表锁
HashMap多线程不安全,需要自己封装
ConcurrentHashMap加细粒度锁,读不加锁,如果读到空值再加锁。注意这三个关键字final,transient,volatile
3. null
Hashtable不允许用 null作为键和值
HashMap允许全局最多一个null键,但是允许无数个null值
ConcurrentHashMap不允许用 null作为键和值