首页 > Java > java教程 > 如何使用 Guava 在 Java 中创建基于时间的过期映射或缓存?

如何使用 Guava 在 Java 中创建基于时间的过期映射或缓存?

Patricia Arquette
发布: 2024-11-24 14:42:15
原创
548 人浏览过

How Can I Create a Time-Based Expiring Map or Cache in Java Using Guava?

带有过期密钥的 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板