多线程java缓存用于创建繁重的对象?

时间:2010-05-05 06:10:05

标签: java caching concurrency

我需要使用相当繁重的创建时间来缓存一些对象,并且我需要一次创建语义。应该可以同时为不同的CacheKeys创建对象。我想我需要一些东西(引擎盖下)做这样的事情:

ConcurrentHashMap<CacheKey, Future<HeavyObject>>

我可以重用这些现有的开源实现吗?

2 个答案:

答案 0 :(得分:3)

你看过GuavaMapMaker课吗?我认为它会做你需要的一切 - 虽然不是提供Future,而是给类Function<? super K, ? extends V>,用于计算值。

回顾一下你的帖子,如果你真的需要值放在那里而不是计算它们,它就不会有效 - 但我会留下这个建议,以防万一地图对你没问题。

答案 1 :(得分:0)

如果你需要一些高级java缓存,请查看Ehcache或JBoss Cache。

我使用了第二个,虽然它没有开发(努力的目标是新的Infinispan项目),但效果很好。您可以将缓存加载器用于自定义对象到缓存逻辑。