相同之处:
- 都是key:value 格式的数据结构
- 两者都适用于多线程环境
- 都实现了Map接口 (ConurrentHashMap继承AbstractMap ,AbstractMap实现Map接口)
- key 和 value 都不能是null (相比HashMap来说 HashMap的key和value都可以是null)
不同之处:
- HashTable 只是在方法上加了synchronized锁 ,ConurrentHashMap是用的分段锁机制(jdk1.7)
- 数据量大的情况下 HashTable性能会大大降低
- jdk1.8 ConurrentHashMap 摒弃了分段机制,改为了数组+链表+红黑树+CAS和synchronized实现
- 现在很少用HashTable 如果要用 就使用ConurrentHashMap
- 如果面试是笔试的话 寥寥几句概括就行 ,如果是和面试官面对面的话,那可以好好扯一下ConurrentHashMap源码实现方面的东西(说实话 我不大会写这些东西)