我需要使用相当繁重的创建时间来缓存一些对象,并且我需要一次创建语义。应该可以同时为不同的CacheKeys创建对象。我想我需要一些东西(引擎盖下)做这样的事情:
ConcurrentHashMap<CacheKey, Future<HeavyObject>>
我可以重用这些现有的开源实现吗?
2 个答案:
答案 0 :(得分:3)
你看过Guava的MapMaker
课吗?我认为它会做你需要的一切 - 虽然不是提供Future
,而是给类Function<? super K, ? extends V>
,用于计算值。
回顾一下你的帖子,如果你真的需要把值放在那里而不是计算它们,它就不会有效 - 但我会留下这个建议,以防万一地图对你没问题。
答案 1 :(得分:0)
如果你需要一些高级java缓存,请查看Ehcache或JBoss Cache。
我使用了第二个,虽然它没有开发(努力的目标是新的Infinispan项目),但效果很好。您可以将缓存加载器用于自定义对象到缓存逻辑。