【问题标题】:HashMap or ConcurrentHashMap at Java Controllers?Java 控制器中的 HashMap 或 ConcurrentHashMap?
【发布时间】:2012-08-12 11:34:57
【问题描述】:

正如这里所解释的:ConcurrentHashMap in Java? Java 的并发 hashmap 是线程安全的。 Java 控制器用于 Web 请求,可以同时从 Web 调用。

我的问题是:我应该在 Java 中使用并发哈希映射而不是哈希映射吗?

【问题讨论】:

    标签: java thread-safety hashmap concurrenthashmap


    【解决方案1】:

    如果您要进行并发读取以及写入或两个并发写入,则只需要ConcurrentHashMap。如果您在初始化后从不更改地图,则普通的HashMap 就足够了。

    控制器通常不应包含任何特定于请求的状态(任何此类状态都应作为参数传递给方法),如果您以这种方式设计控制器,则控制器内不需要任何同步。

    【讨论】:

    • 你能举个例子,只是一段代码有一个控制器需要并发哈希映射,而不需要?
    • @kamaci:正如我所提到的,一个设计良好的控制器不应该维护任何状态,也不应该需要并发哈希映射。
    【解决方案2】:

    如果您有多个线程访问同一个 hashmap,则需要同步此访问。

    您可以通过使用已实现此功能的对象(如 ConcurrentHashMap)或编写您自己的同步代码并使用普通的 HashMap 来做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 2010-11-25
      • 2010-11-20
      相关资源
      最近更新 更多