Java:ConcurrentHashMap

Java:ConcurrentHashMap,java,Java,在Java中映射整数和字符串的正确线程安全集合是什么? ConcurrentHashMap是正确的方法吗 private volatile ConcurrentHashMap<int, bool> chm; private volatile ConcurrentHashMap chm; 上述声明有什么问题。Eclipse显示“标记“int”上的语法错误,此标记后面应包含维度”这将整数映射到字符串。在Java中,泛型必须使用引用类型(整型、布尔型等),而不是原语(整型、布尔型等)

在Java中映射整数和字符串的正确线程安全集合是什么? ConcurrentHashMap是正确的方法吗

private volatile ConcurrentHashMap<int, bool> chm;
private volatile ConcurrentHashMap chm;

上述声明有什么问题。Eclipse显示“标记“int”上的语法错误,此标记后面应包含维度”

这将
整数映射到
字符串。在Java中,泛型必须使用引用类型(整型、布尔型等),而不是原语(整型、布尔型等)

私有最终ConcurrentHashMap chm;

我不需要易变,除非在不太可能的情况下,您将从多个线程向字段中添加新映射。映射本身将负责同步突变。

请确保您了解,即使使用ConcurrentHashMap,也可能会出现不一致的情况,尤其是在代码有读/写/读区域的情况下。该地图上的多个操作仍然需要作为一个“转换”进行同步

我建议使用
private final
。CHM确实负责其内部状态,但只有在正确构造并对线程可见之后<代码>最终版
将保证这一点。我正在从两个线程设置贴图。所以我们需要易变性,对吗?@Mahatma,设置地图是什么意思?您是在设置字段(chm=…),还是只是在调用?您可能只希望第一次使用volatile@Zwei,好建议;这将有助于确保它的正确使用。我认为你实际上不太可能想要
volatile
private final ConcurrentHashMap<Integer, String> chm;