有时,我们需要更新其中field
一个entry.value
. 线程安全的方法是构造一个新的entry.value
并使用put
方法来更新。也就是说,即使我只是做了一些小的修改,我也需要对原始值进行深度复制。
我可以像这样进行此更新吗
map[key].field = fieldValue;
有时,我们需要更新其中field
一个entry.value
. 线程安全的方法是构造一个新的entry.value
并使用put
方法来更新。也就是说,即使我只是做了一些小的修改,我也需要对原始值进行深度复制。
我可以像这样进行此更新吗
map[key].field = fieldValue;
Hash map returns an entry safely, but assignment of a field is out of scope of the map. So, you should do something here for thread safety. Your code is equivalent to:
Entry entry = map[key];
entry.field = fieldValue;
Obviously the field assignment operator doesn't know anything about the map.
也许需要对条目本身进行锁定。如果它只是一个作业,那么 volatile 。