[英]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.