java 的HashMap总结
- HashMap与HashTable:
HashMap key value 都可以是null,Hashtable 不可以,
HashMap 线程不安全,Hashtable 线程安全 SynchronizedHashMap, ConcurrentHashMap
SynchronizedHashMap是采用全部加锁,相当于包装了一层,内部加完锁再调用hashmap,返回的也是一个SynchronizedMap 会保证原来map中的顺序
ConcurrentHashMap 采用重写的方式, 1.7之前采用分段锁技术,只锁相关的bucket,不相关部分可以并发,提高了效率,但是是把map中的值重写到HashEntry[]中,不再是一个map, 另外也不会保持原先map中的顺序。 1.8之后,取消了分段锁的概念,采用CAS实现。