线程安全的使用HashMap
- Hashtable
- ConcurrentHashMap
Hashtable
Hashtable 中的方法是Synchronize的,Hashtable
的所有方法都是同步的。 此时,无竞争的同步会导致可观的性能代价。
ConcurrentHashMap
原理上来说:ConcurrentHashMap 采用了分段锁技术,其中 Segment 继承于 ReentrantLock。不会像 HashTable 那样不管是 put 还是 get 操作都需要做同步处理,理论上 ConcurrentHashMap 支持 CurrencyLevel (Segment 数组数量)的线程并发。每当一个线程占用锁访问一个 Segment 时,不会影响到其他的 Segment。
总而言之,目前流行使用ConcurrentHashMap的方式来解决线程安全,因为ConcurrentHashMap效率更高。