亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Hashmap線程安全的問題

Hashmap線程安全的問題

大話西游666 2018-10-02 17:09:33
剛剛開始接觸Java,看到Hashmap是線程不安全的,不太理解。從某種角度來講,只要有鎖的機制,不是應該所有的數據結構都可以通過鎖來實現線程安全么~為什么Hashmap是線程不安全的,是指Hashmap的實現里不帶鎖機制的意思么~希望能夠得到各位的回答:-\
查看完整描述

2 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

HashMap的實現里確實沒有鎖的機制,因此它是線程不安全的。

另外你說的也沒錯,只要有鎖的機制,可以通過鎖實現線程安全,你可以在讀寫HashMap對象的時候加鎖,以保障這個對象的線程安全,但不代表HashMap本身是線程安全的,因為是外力(你自己加的鎖)使然。

為啥不在HashMap內部加鎖讓它變成線程安全?
這樣會增加單線程訪問的資源消耗,即使沒有多線程訪問,也要每次檢查、加鎖、解鎖。
實際上有線程安全的Map,Collections里面有個靜態方法可以返回一個線程安全版本的HashMap

public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) {  
    return new SynchronizedMap<K,V>(m);  
}

另外java5之后還提供了ConcurrentHashMap類,提供更高效的線程安全操作。


查看完整回答
反對 回復 2018-10-10
  • 2 回答
  • 0 關注
  • 2919 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號