【发布时间】:2014-02-06 23:21:51
【问题描述】:
我正在编写一个严重依赖于每小时完全更新一次的大型地图的网络服务。其余时间多个线程同时读取该表。
我的问题是:实现这样的地图最有效的构造是什么?
地图可以更大(100 - 500 MB)。除了每小时更换一次整个地图之外,只有读取访问权限。
我在考虑只使用 Java HashMap,如果这样可以提高性能,也许可以使用反射在更新之间设置字段 final,但我不知道如何使 JVM 针对许多并发读取进行优化。
【问题讨论】:
-
可以通过
ReadWriteLock从外部管理访问。除此之外,您是否打算使其比“普通” HashMap 更高效? -
你有证据证明普通的HashMap不够用吗?
-
我最怕的是每个线程都有自己的副本。我还读到 ConcurrentHashMap 只有并发写入的优点。
标签: java hashmap concurrenthashmap