[英]synchronized vs lock vs synchronized map
我需要同步我對 hashmap 的訪問。 這是我的選擇
我傾向於做4,因為這聽起來最簡單。 有什么建議么?
我建議您不要使方法同步,並且不要鎖定 map 本身。 我通常更喜歡使用單獨的鎖定 object,它僅用於鎖定,並且僅在擁有 map 的 class 中知道。
您可能會使用synchronizedMap
,但這取決於您想用它做什么。 如果您只獲取和放置值,那很好。 如果您需要迭代map,則需要在迭代時阻止其他線程修改 map。
另一種選擇是使用ConcurrentHashMap
。 有關語義,請參閱文檔。 如果它的行為方式符合您的需要,這可能是最簡單的方法。
您可以使用 ConcurrentHashMap.putIfAbsent() 它可以在不同步的情況下執行您想要的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.