在java中更新Map对象

时间:2015-07-13 20:31:30

标签: java

尝试使用带有键作为id和value的Map变量作为基于java的系统中的自定义对象。

 Map<long, CustomBean> customBeanMap = new ConcurrentHashMap<>();

几个问题:

  1. 在更新缓存中已有的对象期间,最佳做法是什么:

    • 根据键
    • 获取值
    • 更新本地值
    • 更新Map缓存中的值//是否需要此指令??
  2. 由于系统是高度并发的并且部署在多个核心中,并且多个并发线程将处于活动状态,因此customBeanMap的修饰符是否必须具有volatile修饰符?

1 个答案:

答案 0 :(得分:1)

你的问题写得不好但我还是会尝试回答。

  1. 应使用put(map.put(,)更新特定键的值。在高度并发的环境中,这一点更为重要,在这种情况下,读取值然后更新它可能会导致意外的结果。 / LI>
  2. 如果您必须读取前一个值以确定下一个值,我建议使用锁定机制来确保地图上的所有操作都是单独完成的(除非您已经确认这对您的应用程序来说不是必需的)< / LI>
  3. 我对使用挥发性物质的经验不足,所以我无法帮助你
  4. 您的值是一个对象(也是地图中的实际对象),因此更新它也会自然更新地图。
  5. 祝你好运, 罗伊。