日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1.7 ConcurrentHashMap增删改查

發布時間:2024/2/28 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.7 ConcurrentHashMap增删改查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ConcurrentHashMap線程安全并且提高性能原因就在于:對map中的讀是并發的,無需加鎖;只有在put、remove操作時才加鎖,而加鎖僅是對需要操作的segment加鎖,不會影響其他segment的讀寫,由此,不同的segment之間可以并發使用,極大地提高了性能。

  • 查詢

第一次hash確定key在哪個segment中;第二次hash在segment中確定key在鏈表數組的哪個鏈表中;第三步遍歷這個鏈表,調用equals()進行比對,找到與所查找key相等的結點并讀取。

  • 插入

首先由key值經過hash計算得到是哪個segment,如果segment大小以及到達閥值則擴容;然后再次hash確定key所在鏈表的數組下標,獲取鏈表頭;最后遍歷鏈表,如果找到相同的key的結點則更新value值,如果沒有則插入新結點

  • 刪除

首先由key經過hash確定所在segment;然后再hash確定具體的數組下標,獲得鏈表頭;最后遍歷鏈表,找到被刪除結點后,以被刪除結點的next結點開始建立新的鏈表,然后再把原鏈表頭直到被刪結點的前繼結點依次復制、插入新鏈表,最后把新鏈表頭設置為當前數組下標元素取代舊鏈表。

  • 統計大小—Size()

?ConcurrentHashMap在統計size時,經歷了兩次遍歷:第一次不加鎖地遍歷所以segment,統計count和modCount的總和得到C1和M1;然后再次不加鎖地遍歷,得到C2和M2,比較M1和M2,如果修改次數沒有發生變化則說明兩次遍歷期間map沒有發生數量變化,那么C1就是可用的。如果M1不等于M2,則說明在統計過程中map的數量發生了變化,此時才采取最終手段——鎖住整個map進行統計。

總結

以上是生活随笔為你收集整理的1.7 ConcurrentHashMap增删改查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。