是否可以直接在ConcurrentHashMap中更新entry.value.field?

时间:2013-05-02 13:54:13

标签: concurrenthashmap

有时,我们需要更新一个field entry.value。 线程安全的方法是构造一个新的entry.value和 使用put方法进行更新。也就是说,我需要做深刻的复制 虽然我只做了一些修改,但仍然具有原始价值。

我可以像

那样进行此更新
map[key].field = fieldValue;

2 个答案:

答案 0 :(得分:1)

哈希映射安全地返回一个条目,但是字段的分配超出了地图的范围。所以,你应该在这里做一些线程安全的事情。您的代码相当于:

Entry entry = map[key];
entry.field = fieldValue;

显然,字段赋值运算符对地图一无所知。

答案 1 :(得分:0)

可能需要锁定条目本身。如果它只是一个赋值,那么不稳定。