table:数组加volatile保证可见性和有序性
put():数组不存在,通过CAS创建;数组下标位置为空,通过CAS插入;数组下标位置不为空,给头节点加synchronized来插入链表或红黑树
面试题
ConcurrentHashMap是通过synchronized保证线程安全的吗?
不是,HashTable是单纯给方法加synchronized来保证单机线程安全,性能低
ConcurrentHashMap是通过volatile CAS/synchronized局部加锁而非锁住整个方法来提高性能