多个条目的 ConcurrentHashMap 更新
ConcurrentHashMap update of multiple entries
我有一种情况,在 ConcurrentHashMap 中我存储了一些属性,如 ip 地址和端口或罚款和代码 - 2 个或更多相互连接的条目。
现在我想自动更新这 2 个条目以避免读取不正确的对。
所以现在我正在考虑它,不知道简单的解决方案。
我可以用 ReadWriteLock 块包装 get/put 方法,但感觉不对 :) 我没有使用 ConcurrentHashMap 来编写额外的锁。
另一种选择是将这些属性合并为一个。现在我倾向于那个选项。
其他选项是在值对象中有版本,但我每次都需要检查它,我不想这样做:)
这个问题还有其他解决方案吗?
此致
我想,你可以使用不同的方式,没有 ConcurrentHashMap.
如果你想添加一些东西,比如你的操作的优先级。例如:更新操作高于获取操作,您可以使用 PriorityBlockingQueue
,例如:HashSet
来存储对象而不重复。那你确定你的实际属性是最新的。
您不能自动更新多个条目。您有两个选择:
使用带有外部同步的简单 HashMap
。
对 Map
值使用不同的类型,这是一对必须一起考虑的项目。
我有一种情况,在 ConcurrentHashMap 中我存储了一些属性,如 ip 地址和端口或罚款和代码 - 2 个或更多相互连接的条目。
现在我想自动更新这 2 个条目以避免读取不正确的对。
所以现在我正在考虑它,不知道简单的解决方案。
我可以用 ReadWriteLock 块包装 get/put 方法,但感觉不对 :) 我没有使用 ConcurrentHashMap 来编写额外的锁。
另一种选择是将这些属性合并为一个。现在我倾向于那个选项。
其他选项是在值对象中有版本,但我每次都需要检查它,我不想这样做:)
这个问题还有其他解决方案吗?
此致
我想,你可以使用不同的方式,没有 ConcurrentHashMap.
如果你想添加一些东西,比如你的操作的优先级。例如:更新操作高于获取操作,您可以使用 PriorityBlockingQueue
,例如:HashSet
来存储对象而不重复。那你确定你的实际属性是最新的。
您不能自动更新多个条目。您有两个选择:
使用带有外部同步的简单
HashMap
。对
Map
值使用不同的类型,这是一对必须一起考虑的项目。