带有过期密钥的 Java 基于时间的映射/缓存
在 Java 编程语言中,管理映射或缓存中基于时间的条目是一个常见的要求。本文提供了一种使用 Google Collections (Guava) 自动清除过期条目的解决方案。
解决方案
Guava 的 MapMaker 类可以创建基于时间的地图,过期时间可调设置。 MapMaker API 允许自定义各种参数,例如:
使用情况示例
以下代码片段演示了如何创建并发的基于时间的地图:
ConcurrentMap<Key, Graph> graphs = new MapMaker() .concurrencyLevel(4) .softKeys() .weakValues() .maximumSize(10000) .expiration(10, TimeUnit.MINUTES) .makeComputingMap( new Function<Key, Graph>() { public Graph apply(Key key) { return createExpensiveGraph(key); } });
在此示例中,地图每 10 分钟自动清除过期条目。
更新
在 Guava 10.0 和后来,MapMaker 方法已被弃用,取而代之的是 CacheBuilder:
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(10000) .expireAfterWrite(10, TimeUnit.MINUTES) .build( new CacheLoader<Key, Graph>() { public Graph load(Key key) throws AnyException { return createExpensiveGraph(key); } });
以上是如何使用 Guava 在 Java 中创建基于时间的过期映射或缓存?的详细内容。更多信息请关注PHP中文网其他相关文章!