2013-07-16 3 views
1

Guava 캐시의 RemovalListener이 제거 된 항목의 키와 동기화되어 있는지 궁금합니다. 내가 이해하는 한, 구아바 캐시는 SynchronizedHashMap 상단에 구축되며 호출은 동일한 시퀀스에서 SynchronizedHashMap과 동기화되므로 동일한 키에 대해 캐시의 get 메서드를 두 번 호출하면 항목이 두 번로드되지 않습니다 . 이제 사용자가 get에 전화 할 수 있는지 궁금합니다. RemovalListener은 여전히 ​​다른 스레드에서 onRemoval(RemovalNotification) 메서드를 실행 중입니다.Guava 캐시의 RemovalListener가 동기화 되었습니까?

도움 주셔서 감사합니다.

+2

소스 코드는 무료로 제공되지 않습니까? –

+0

그렇지만, 내가 물어볼지도 모른다고 생각했습니다. 아무도 대답을 모르는 경우, 나는 내일 자신을 통해 소스를 파헤쳐보고 내일 사무실에있을 때 내 자신의 질문에 답할 것이다. 그러나 누군가가 알고 있다면, 이것은 물론 안전 할 것입니다. –

답변

2

구아바 캐시는 CHM에 "내장"되어 있지는 않지만 ConcurrentHashMap과 비슷합니다. 그것은 모든 것을 다시 쓰는 것을 포함합니다.

귀하의 질문에 대한 답변은 항목이 RemovalListener에 의해 처리되는 경우 해당 항목이 캐시에 더 이상 존재하지 않으며 get 쿼리가 항목이 캐시에없는 것처럼 처리된다는 것입니다. 해당 키의 값을 처음부터로드하여

+0

실제로 동기화되지 않았으므로 오늘 소스 코드를 확인했습니다. 답변 주셔서 감사합니다! –

관련 문제