我想知道 RemovalListener
是否Guava 缓存的内容在已删除条目的键上同步。据我了解,Guava 缓存是建立在 SynchronizedHashMap
之上的如果我两次调用缓存的 get
,则条目不会被加载两次方法在同一个键上,因为调用在 SynchronizedHashMap
的相同序列上同步。 。现在我想知道用户是否可以调用 get
而 RemovalListener
仍在运行其 onRemoval(RemovalNotification)
不同线程上的方法。
感谢您的帮助!
最佳答案
Guava 缓存更像是一个 ConcurrentHashMap
,尽管它不是构建在 CHM“之上”;它涉及整个事情的重写。
也就是说,您的问题的答案是,如果一个条目正在由 RemovalListener
处理,则它不再位于缓存中,并且 get
查询将就好像该条目从未在缓存中一样对待:通过从头开始加载该键的值。
关于java - Guava缓存的RemovalListener是否同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17681532/