Java Guava中EnumMap和ConcurrentHashMap的组合?

Java Guava中EnumMap和ConcurrentHashMap的组合?,java,dictionary,enums,thread-safety,guava,Java,Dictionary,Enums,Thread Safety,Guava,Guava(或其他地方)是否有一个map类同时提供EnumMap和ConcurrentHashMap的功能?所以我可以有一个线程安全的映射实现,它使用enum键非常快 我知道我可以通过调用Collections.synchronizedMap()将枚举映射封装在完全同步映射中,但这并不是我想要的完全(昂贵的)同步。这实际上取决于你所说的不是我想要的完全同步。请澄清 我会把你的EnumMap包装在一个在地图上实现读/写锁的支架中。理论上,你自己拿着一个AtomicReference[]数组来实现它

Guava(或其他地方)是否有一个map类同时提供
EnumMap
ConcurrentHashMap
的功能?所以我可以有一个线程安全的映射实现,它使用enum键非常快


我知道我可以通过调用
Collections.synchronizedMap()
枚举映射
封装在完全同步映射中,但这并不是我想要的完全(昂贵的)同步。

这实际上取决于你所说的不是我想要的完全同步。请澄清


我会把你的
EnumMap
包装在一个在地图上实现读/写锁的支架中。

理论上,你自己拿着一个
AtomicReference[]
数组来实现它并不难……不是内置在Guava或JDK中,不,恐怕不是。谢谢Louis。我猜你是番石榴队的?为什么没有这个班?这是一个很奇怪的要求吗?有没有计划将来再加上它?我从来没有听说过有这样的需求。欢迎您提交功能请求,但在Guava添加功能之前,可能需要需求证据。此外,值得一提的是:
EnumMap
s通常具有相对较小的大小,因为它们的大小受指定类型的枚举常量数量的限制,这减少了高效并发实现的需要。
ConcurrentHashMap
满足所有这些需要,不是吗?但这与Collections.synchronizedMap()的功能很接近,对吗?@Sergio-也许-但很可能
Collections.synchronizedMap()
会同步所有访问,也就是说,没有两个线程可以并行访问。我的建议是通过允许多个读请求并行,但写访问获得独占访问来改进这一点。同样,这取决于您所说的不是完全同步的意思。ConcurrentHashMap限制争用锁。我不知道实现细节,但可能是通过锁定与相应条目数组中的插槽关联的对象来实现的。我也在寻找同样的方法,但由于我的键是枚举,所以具有EnumMap的性能优势。@Sergio-访问速度仍然很快-同步映射仍将以这种方式访问基础映射。