concurrentHashMap的底层原理是什么?

解决方案 »

  1.   

    效率比Hashtable高,并发性比hashmap好。结合了两者的特点。据说是这样的。
      

  2.   

    既然是ConcurrentHashMap,那HashMap有的特点它都有
       链表形式的数组,根据HashCode计算key在数组中的下标
      1.8之后引入的树形化,虽然平时开发基本不会生效不同的是HashMap迭代时是fail-fast快速失败,即当迭代器在迭代过程中发现数组有变化了,会抛异常
    而ConcurrentHashMap不会抛异常,这并不表示迭代的结果会将这些变化体现出来。
    ConcurrentHashMap的线程安全,体现在put时,锁的是链表,而不是整个数组,所以性能比HashTable优
      

  3.   

    锁分段,concurrentHashMap 的结构也是数组加链表变红黑树, 所谓的锁分段,就是用key获取值的时候,散列到那个链表上,用那条链表的头做为锁。这样访问只要散列不冲突,就不会造成等待。