我想知道Guava缓存的RemovalListener
是否在已删除条目的密钥上同步。据我所知,Guava缓存建立在SynchronizedHashMap
之上,如果我在同一个密钥上对缓存的get
方法进行两次调用,则该条目将不会被加载两次同步SynchronizedHashMap
的相同序列。现在我想知道用户是否可以在get
仍然在其他线程上运行其RemovalListener
方法时调用onRemoval(RemovalNotification)
。
感谢您的帮助!
答案 0 :(得分:3)
Guava缓存更像是ConcurrentHashMap
,虽然它不是“在CHM之上”构建的;它涉及重写整个事物。
也就是说,您的问题的答案是,如果某个条目由RemovalListener
处理,则该条目不再位于缓存中,get
查询将被视为从不在缓存中:通过从头开始加载该键的值。