Java-集合-ConcurrentHashMap

table:数组加volatile保证可见性和有序性

put():数组不存在,通过CAS创建;数组下标位置为空,通过CAS插入;数组下标位置不为空,给头节点加synchronized来插入链表或红黑树

面试题

ConcurrentHashMap是通过synchronized保证线程安全的吗?

不是,HashTable是单纯给方法加synchronized来保证单机线程安全,性能低

ConcurrentHashMap是通过volatile CAS/synchronized局部加锁而非锁住整个方法来提高性能

你可能感兴趣的:(java,开发语言,jvm)