如何
假设我有这门课
@ImmutableWannabe
public class ConfigurationHolder {
@ImmutableButHowToMakeSureNoTwoThreadsOverrideOneEachOtherWhenReplacingReference
private Map<System, Configuration> mySysConfig = ImmutableMap.builder<>getSomeConfigurations....build();
ConfigurationHolder(copy constructor) {
mySysConfig = ImmutableMap.builder().of(inputSysConfig);
}
}
现在假设其中一个系统配置已更新,我需要更新此映射,但我需要以线程安全的方式进行。这意味着如果两个线程尝试更新相同系统数据的相同配置,它们应该是一致的,并且它们不应该相互覆盖。
不变性对我有什么帮助?据我所见,如果是的话,我仍然需要锁定如何正确执行?
所以我的一般问题是:任何可以随系统时间更改的 immutableObject 是否都会导致我们需要锁定需要更改其 ImmutableObjectHolder 的代码?我不明白...
有人可以为该 Map 提供一个 ImmutableMap + Holder 的正确示例 + 正确的“客户端”代码,该代码知道用内部 Map 的更新来更新这个 ImmutableMapHolder 吗?
谢谢