我需要一个Map
(或任何集合)来支持条目的空闲时间并自动删除它们。
我知道有guava MapMaker
,但它会在后续的读/写操作中使其元素过期,而不是由正在运行的线程自动过期。此外,MapMaker
的过期功能现已移至CacheBuilder
。问题是,我不想要缓存 - 我想要过期的元素
有什么东西可以直接使用吗? (我自己实现它并不难,但重用一些东西更好)
答案 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)
Apache Mina的ExpiringMap正是您所需要的。
http://mina.apache.org/mina-project/apidocs/org/apache/mina/util/ExpiringMap.html
答案 3 :(得分:0)
我建议使用Hazelcast提供的Map
。它还提供分布式功能,但您可能对它们不感兴趣。您只需配置过期策略(time-to-live-seconds
和max-idle-seconds
)并使用Map
,就像Java HashMap
一样。
可以在此处找到更多信息:Hazelcast Distributed Map