映射自动过期的元素

时间:2011-10-13 22:02:51

标签: java collections

我需要一个Map(或任何集合)来支持条目的空闲时间并自动删除它们。

我知道有guava MapMaker,但它会在后续的读/写操作中使其元素过期,而不是由正在运行的线程自动过期。此外,MapMaker的过期功能现已移至CacheBuilder。问题是,我不想要缓存 - 我想要过期的元素

有什么东西可以直接使用吗? (我自己实现它并不难,但重用一些东西更好)

4 个答案:

答案 0 :(得分:2)

也许:http://code.google.com/p/concurrentlinkedhashmap/wiki/ExpirableCache
而不是......它有很多未解决的进口。

答案 1 :(得分:2)

如果不出意外,您可以提供仅抛出异常的虚假CacheLoader,然后只是不要调用Cache.get - 只与asMap视图互动。它不是漂亮,但我们正努力在11.0中更好地支持这种情况。如果你试试这个,请确保你有Guava 10.0.1。

是的,Cache.cleanUp可以随时根据您的需要随时拨打电话。

答案 2 :(得分:0)

答案 3 :(得分:0)

我建议使用Hazelcast提供的Map。它还提供分布式功能,但您可能对它们不感兴趣。您只需配置过期策略(time-to-live-secondsmax-idle-seconds)并使用Map,就像Java HashMap一样。

可以在此处找到更多信息:Hazelcast Distributed Map