ConcurrentHashMap 和 Hashtable 的区

2020-12-12  本文已影响0人  Travis_Wu

一、出现版本的不同

出现的年代不同,在实现方式及性能上也存在较大的不同

二、实现线程安全方式的不同

Hashtable 实现并发安全是通过 synchronized 关键字
ConcurrentHashMap 通过cas,node,synchronized 相结合的方式实现

三、性能不同

四、迭代时修改的不同

Hashtable(包括HashMap)不允许在迭代期间修改内容,否则会抛出ConcurrentModificationException 异常,其原理是检测 modCount 变量
迭代器的 next() 方法的代码如下:

public T next() { 
    if (modCount != expectedModCount) 
        throw new ConcurrentModificationException(); 
    return nextElement(); 
}

ConcurrentHashMap 即便在迭代期间修改内容,也不 会抛出ConcurrentModificationException

上一篇 下一篇

猜你喜欢

热点阅读