我们如何正确设置LoadFactor&我们的concurrenthashmap的并发级别?

时间:2017-11-16 20:23:02

标签: java multithreading concurrency concurrenthashmap

我试图将并发hashmap用作我的应用程序的缓存,以便它在开始时从数据库加载所有数据。我的问题是如何确定我的并发哈希属性的最佳基本配置map.How如何确定CHM的最佳负载系数和并发级别?这让我感到困惑,因为我们不知道有多少线程会尝试访问我的CHM(这完全取决于当前登录的用户)。

ConcurrentHashMap m = new ConcurrentHashMap(200,??,??);

并发请求可能是100,000或1M或5M,这一切都取决于登录用户?

1 个答案:

答案 0 :(得分:0)

首先,由于您必须从数据库加载值,因此您所做的事情变得复杂。这假定在开始此过程之前数据库连接可用。

其次,您是否打算在加载后修改缓存中的值?并发性仍会增加一些开销,即使它少于使用同步。

如果没有,请查看使用某种不可变的Map,例如Google实施的ImmutableMap。在类静态初始化程序中加载地图。在允许任何对Map的访问之前,必须完成此方法。因此,您不会遇到任何并发问题。