我正在开发自定义i18N库。在那里,我开发了一个函数来获取语言环境对象作为输入国家和语言。
我不想为每个请求初始化语言环境对象。我可以使用ConcurrentHashMap
存储Locale对象吗? ConcurrentHashMap
可以处理100k并发请求吗?
答案 0 :(得分:2)
假设你使用早于8的Java版本,如果你想最大化ConcurrentHashMap
的并发级别,你需要:
ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel)
创建ConcurrentHashMap
的实例,以便设置与要使用的段总数相对应的concurrencyLevel
,因为默认情况下它是16并明智地选择它因为使用比你需要的值更高的值会浪费空间和时间,而显着更低的值可能导致线程争用。hashCode()
,以便在不同的细分中尽可能地分配您的条目。 在 Java 8 中,ConcurrentHashMap
的实施已完全审核,因此您不再拥有细分,concurrencyLevel
现在用作尺寸提示仅此而已#1不再需要,但#2仍然是一个很好的做法。
答案 1 :(得分:0)
ConcurrentHashMap是一个非常有效的数据结构。您可以从它开始,测量/测试性能以确保它足够您。