java - Guava缓存的RemovalListener是否同步?

标签 java guava

我想知道 RemovalListener 是否Guava 缓存的内容在已删除条目的键上同步。据我了解,Guava 缓存是建立在 SynchronizedHashMap 之上的如果我两次调用缓存的 get ,则条目不会被加载两次方法在同一个键上,因为调用在 SynchronizedHashMap 的相同序列上同步。 。现在我想知道用户是否可以调用 getRemovalListener仍在运行其 onRemoval(RemovalNotification)不同线程上的方法。

感谢您的帮助!

最佳答案

Guava 缓存更像是一个 ConcurrentHashMap,尽管它不是构建在 CHM“之上”;它涉及整个事情的重写。

也就是说,您的问题的答案是,如果一个条目正在由 RemovalListener 处理,则它不再位于缓存中,并且 get 查询将就好像该条目从未在缓存中一样对待:通过从头开始加载该键的值。

关于java - Guava缓存的RemovalListener是否同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17681532/

相关文章:

java - java中的字符串排序

java - 部署应用程序时的Weblogic Guava问题

java - 为什么 "3.5".matches ("[0-9]+") 返回 false?

java - Java中的文件声明

java - 使用 Spring Data JPA/MongoDB Cross Store,查询可以跨两个数据库吗?

spring - Redis 与 Guava 缓存

java - Google Cloud Endpoints 框架 - EndpointServlet ClassNotFoundException

java - JUnit 测试中的 SystemOutRule 未捕获标准输出

java - 在文件中打印时分割值

java - 使用 Java StAX 解析 XML - 计算内容标签的数量