java - 如何将 () 值放入 Guava 的缓存类中?

标签 java guava

我对 CacheBuilder 有点困惑和 Cache在 Guava 10 中引入。文档暗示可以 overwrite values但据我所知,Cache不包含任何这样做的方法。有什么想法吗?

我正在尝试构建一个在上次读取或写入后 10 秒过期的映射。查找值时,我希望返回先前设置的值,或者如果不存在则计算默认值。

注意:这个问题已经过时了。虽然上面的 Javadoc 显示了 Cache.put(K key, V value) 方法的存在,但在问题首次发布时它并不存在。

最佳答案

长期以来,Cache#asMap 返回一个 ConcurrentMap View 。

据我所知,还没有。但是有一个 thread提到 Cache.asMap.put 计划用于版本 11。

如果 CacheBuilderMapMaker 演化而来(其中缓存设置方法目前已弃用)。

I'm trying to construct a Map that expires a key 10 seconds after it was last read or written-to. When a value is looked up, I expect the previously-set value to be returned, or a default value to be computed if none exists.

使用 expireAfterAccess(10, TimeUnit.SECONDS) 将使条目在任何访问后保持 Activity 状态 10 秒。您将获得的唯一值是您的 CacheLoader 计算的值(在 get 之前或期间)。

关于java - 如何将 () 值放入 Guava 的缓存类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616169/

相关文章:

Java:如何使用谷歌的HashBiMap?

java - Guava CacheBuilder 最大尺寸

java - 在 ANT 构建中添加文件(Tomcat 服务器)

java - 将一组列从一个表复制到另一个表

java - Linux服务器如何永久更改时区

java - 循环访问一组对象

scala - 从 scala 代码中使用 Google guava 时出现编译器错误

java - Guava 是否支持合约类,或者是否允许接口(interface)文档?

java - 在嵌套循环中将子列表添加到 Guava 表中会出现并发修改错误

java - 使用基本身份验证在 Java 中获取和发布 API 调用