如何正确使用concurrenthashmap?

时间:2011-08-16 02:55:05

标签: java concurrenthashmap

说,我有很多读操作和一些写操作,并且将放置在地图中的对象非常“重” - 这种对象的初始化会花费很多内存/时间等。

我应该如何编写代码以利用concurrenthashmap的高性能并确保这些缓存对象的不必要初始化的最低成本。

示例代码段是受欢迎的,非常感谢! 谢谢!

3 个答案:

答案 0 :(得分:2)

非常确定番石榴正是您想要的,请参阅MapMaker.makeComputingMap

答案 1 :(得分:1)

ConcurrentHashMap中的代码经过高度优化 - 我只想使用它。

如果更新很少,并发开销很小。如果在读取期间发生写入操作,则在进行内部状态的临时副本时会产生一些开销,但是否则性能差异可以忽略不计。我将按原样使用提供的类,并且只有当您发现性能问题时,然后才会使用其他内容。

请注意,初始化开销与并发性能无关,只有将其添加到地图的操作才是。

答案 2 :(得分:0)

这取决于您的要求,但您可以考虑使用Pool个实例来减少实例化计数。如果您当前正在从地图转储项目以进行垃圾收集,那么这将提高您的性能,因此您将它们放回池中并在以后重新使用它而不是GC。