HashMap
HashMap跟HashTable和ConcurrentHashMap都不一样。
HashMap是线程不安全的,而HashTable和ConcurrentHashMap都是线程安全的。
HashTable
HashTable和HashMap不一样,HashTable是线程安全的,HashTable对自己加了锁(也就是this)。
就比如put方法:
下面是示例图:
ConcurrentHashMap
ConcurrentHashMap也是线程安全的,但是跟HashTable比起来有区别,它是对每一个链表(或者红黑树)都加了锁。
如图:
当多个线程操作不同的链表(或者红黑树)时,拿到的锁不同,可以并发执行,效率比较高。