Dan*_*ein 6 java multithreading hashmap
我正在寻找一个好的哈希映射实现.具体来说,一个有利于创建大量地图的地图,其中大多数都很小.所以记忆是一个问题.它应该是线程安全的(虽然丢失奇数放置可能是一个好的妥协,以换取更好的性能),并且快速的get和put.而且我也喜欢用棍子上的月亮,请带着正义的副本.
我知道的选项是:
HashMap中.灾难性的非线程安全.
ConcurrentHashMap的.我的第一选择,但这有很大的内存占用 - 每个实例大约2k.
Collections.sychronizedMap(HashMap的).这对我来说很合适,但我确信必须有更快的选择.
Trove或Colt - 我认为这些都不是线程安全的,但也许代码可以适应线程安全.
还有其他人?什么时候打什么什么的建议?任何真正好的新哈希映射算法,Java可以使用它的实现?
提前感谢您的意见!
Collections.synchronizedMap()简单地制作所有Map方法synchronized.
ConcurrentMap真的是你想要的接口有几种实现方式(例如ConcurrentHashMap,ConcurrentSkipList).它有几个Map对线程安全操作不重要的操作.此外,它比同步更精细,Map因为操作只会锁定一部分支持数据结构而不是整个事物.
嗯,Apache Mahout 中有一辆打扮得漂漂亮亮的柯尔特。这仍然不是目前的业务。使用同步块保护代码有什么问题?您是否期待一些极其复杂的方案,其持有的锁定粒度小于put或get?
如果您可以编写代码,请将其贡献给 Mahout。
| 归档时间: |
|
| 查看次数: |
1682 次 |
| 最近记录: |