轉自:
http://www.java265.com/JavaCourse/202204/2950.html
ConcurrentHashmap:
樂觀鎖+Sysnchronized
多執行緒并發向同一個散列桶添加元素時若散列桶為空,則觸發樂觀鎖機制,執行緒獲取"散列桶"中的版本號,在添加元素之前判斷執行緒中的版本號與桶中的版本號是否一致
致,添加成功不一致,自旋若散列桶不為空,,則使用synchroinized.先訪問到的執行緒給頭結點解
鎖,形成鏈表或"紅黑樹",JDK1.8中ConcrruentHashMap在保證執行緒安全的同時允許最大程式的多執行緒并發執行
下文筆者講述ConcurrentHashMap和HashTable的不同之處,如下所示:
ConcurrentHashMap使用多個存盤桶來存盤資料
使用這種方式可避免讀取鎖定
其性能比HashTable優秀
HashTable則是使用一個簡單的同步鎖進行每次的讀寫
注意事項:
1.ConcurrentHashMap和HashTable都是執行緒安全的
2.單執行緒下,筆者建議使用HashMap這個容器
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/500155.html
標籤:Java
上一篇:java之map大白話
