Java:多线程映射:实现比较如何?

标签 java multithreading hashmap

我正在寻找一个好的 HashMap 实现。具体来说,它适用于创建大量 map ,其中大部分都很小。所以内存是个问题。它应该是线程安全的(虽然丢失奇数 put 可能是为了获得更好的性能而做出的妥协),并且对于 get 和 put 来说都应该很快。我还想要一根棍子上的月亮,请附上正义的命令。

我知道的选项是:

  • HashMap 。灾难性的非线程安全。

  • 并发 HashMap 。我的第一选择,但这会占用大量内存 - 每个实例大约 2k。

  • Collections.sychronizedMap(HashMap)。这对我来说没问题,但我确信一定有更快的替代方案。

  • Trove 或 Colt - 我认为它们都不是线程安全的,但也许代码可以调整为线程安全的。

还有其他的吗?关于什么时候胜过什么的任何建议? Java 可以使用的任何非常好的新 HashMap 算法的实现?

预先感谢您的输入!

最佳答案

Collections.synchronizedMap() 简单地使所有 Map 方法同步

ConcurrentMap 确实是您想要的接口(interface),并且有多种实现(例如ConcurrentHashMapConcurrentSkipList)。它有几个 Map 没有的操作,这些操作对于线程安全操作并不重要。此外,它比同步的 Map 更细粒度,因为操作只会锁定支持数据结构的一部分,而不是整个结构。

关于Java:多线程映射:实现比较如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2878581/

相关文章:

java - hashmap<String, String> 的属性

android - kotlin,如何将HashMap放入Parcelable

java - 创建无状态组件

java - 根据用户输入设置菜单项android

java - TreeSet 中有序操作的时间复杂度是多少?

android - 如何将线程中的数据/流实时传递到 Android 中的 Activity ?

java - 如果可执行 Jar 文件不在 dist 文件夹中,则该文件不会运行

ios - 2个后台进程队列

multithreading - 多线程程序可以是确定性的吗?

java - 在Java中创建同步静态单例Map