关于ConcurrentHashMap在jdk1.7的升级到1.8中的变化
生活随笔
收集整理的這篇文章主要介紹了
关于ConcurrentHashMap在jdk1.7的升级到1.8中的变化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
改進一:取消segments字段,直接采用transient volatile HashEntry<K,V>[] table保存數據,采用table數組元素作為鎖,從而實現了對每一行數據進行加鎖,進一步減少并發沖突的概率。
改進二:將原先table數組+單向鏈表的數據結構,變更為table數組+單向鏈表+紅黑樹的結構。對于hash表來說,最核心的能力在于將key hash之后能均勻的分布在數組中。如果hash之后散列的很均勻,那么table數組中的每個隊列長度主要為0或者1。但實際情況并非總是如此理想,雖然ConcurrentHashMap類默認的加載因子為0.75,但是在數據量過大或者運氣不佳的情況下,還是會存在一些隊列長度過長的情況,如果還是采用單向列表方式,那么查詢某個節點的時間復雜度為O(n);因此,對于個數超過8(默認值)的列表,jdk1.8中采用了紅黑樹的結構,那么查詢的時間復雜度可以降低到O(logN),可以改進性能
轉載于:https://my.oschina.net/u/198077/blog/3032712
總結
以上是生活随笔為你收集整理的关于ConcurrentHashMap在jdk1.7的升级到1.8中的变化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenV P N + AD(Ldap)
- 下一篇: Python数据类型(列表和元组)