首页 > Java > java教程 > 正文

Guava 的 MapMaker 和 CacheBuilder 如何简化 Java 地图中的过期密钥管理?

Patricia Arquette
发布: 2024-11-20 18:48:16
原创
777 人浏览过

How Can Guava's MapMaker and CacheBuilder Simplify Expiring Key Management in Java Maps?

管理 Java 映射中的过期密钥

作为 Java 开发人员,处理密钥过期机制通常是一项繁琐的任务。许多人寻求一种简单的解决方案,消除手动清除的需要,并且仅依赖于基于代码的实现。为了缓解这一挑战,值得深入研究 Google Collections 库(现在的 Guava)。

MapMaker 和 CacheBuilder 简介

Guava 提供了两个用于管理基于时间的强大工具地图:MapMaker 和 CacheBuilder。 MapMaker 允许灵活定制地图,包括为其条目设置过期时间的能力。 Guava 10.0 中引入的 CacheBuilder 提供了用于配置缓存机制的现代化界面。

设置过期时间

要配置映射条目的过期时间,您可以使用以下命令方法:

  • 地图制作器:过期(长持续时间,TimeUnit单位)
  • CacheBuilder:expireAfterWrite(长持续时间,TimeUnit单位)或expireAfterAccess(长持续时间,TimeUnit单位)

使用示例实现MapMaker

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);
         }
       });
登录后复制

Guava 10.0 中的增强

在 Guava 10.0 中,原始 MapMaker 方法已被弃用,取而代之的是 CacheBuilder。以下示例演示了 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);
          }
        });
登录后复制

通过利用这些工具,您可以轻松管理 Java 中基于时间的映射,确保自动清除过期密钥并优化数据处理机制的效率。

以上是Guava 的 MapMaker 和 CacheBuilder 如何简化 Java 地图中的过期密钥管理?的详细内容。更多信息请关注PHP中文网其他相关文章!

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