gpt4 book ai didi

java - 对大量读取但很少修改的集合进行访问保护/同步?

转载 作者:行者123 更新时间:2023-12-01 07:41:21 25 4
gpt4 key购买 nike

假设我有一个简单的 map ,它经常被查询,但只是偶尔修改。目前,我在添加到 map 时使用同步块(synchronized block)来防止竞争条件(简化示例):

public class MyRepository {

private static HashMap<Integer, Object> MAP = new HashMap<Integer, Object>();

public static Object getInstance(Integer key) {
synchronized (MAP) {
return MAP.get(key);
}
}

public static void addInstance(Integer key, Object instance) {
synchronized (MAP) {
MAP.put(key, instance);
}
}

}

我遗漏了任何特定于应用程序的废话,例如处理按键冲突等。您明白了,非常简单。在运行时,当应用程序启动时, map 将充满实例。此后, map 很少被修改(可以说是千载难逢)。另一方面, map 的查询非常频繁,并且查询 map 的多个线程相互阻塞。

是否存在一种保护机制,允许多个“读取者”同时获取 map ,同时仍然一次只允许一个“写入者”?

最佳答案

你看过广告吗ConcurrentHashMap从 JDK 5 开始?它适用于这个用例

关于java - 对大量读取但很少修改的集合进行访问保护/同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4502489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com