ConcurrentHashMap更新多个条目

时间:2018-12-05 09:01:28

标签: java concurrency concurrenthashmap

我有一种情况,在ConcurrentHashMap中,我存储了一些属性,如ip地址和端口或罚款和代码-2个或更多相互连接的条目。

现在,我想自动更新这2个条目,以避免读取不正确的对。

所以现在我正在考虑它,不知道简单的解决方案。

我可以用ReadWriteLock块包装get / put方法,但这感觉很不对:)我没有使用ConcurrentHashMap来编写其他锁。

其他选项是将这些属性合并为一个。现在,我倾向于这种选择。

其他选择是在值对象中具有版本,但是我每次都需要检查它,而我不想这样做:)

这个问题还有其他解决方法吗?

致谢

2 个答案:

答案 0 :(得分:2)

您不能自动更新多个条目。您有两种选择:

  • 使用简单的HashMap进行外部同步。

  • Map值使用不同的类型,这将必须一起考虑的一对项目。

答案 1 :(得分:1)

我认为,您可以使用其他方式,而无需使用ConcurrentHashMap.

如果要添加诸如操作优先级之类的提示。例如:先更新操作,然后再获取操作,您可以使用PriorityBlockingQueue,例如:HashSet来存储对象而无需重复。然后,您可以确定您的实际属性是最新的。