여러 스레드의 데이터 구조에 항목을 채우고 특정 크기에 도달 한 후에 오래된 레코드를 삭제하기 시작하는 유스 케이스가 있습니다. 그래서 이것을 위해 Guava Loading Cache를 사용하기로 결정했습니다.Loading Cache guava에 항목을 채우는 방법은 무엇입니까?
로드 캐시에 여러 스레드에서 항목을 채우고 축출 기반 정책을 Size Based Eviction
으로 설정하려고합니다.
private final ScheduledExecutorService executorService = Executors
.newSingleThreadScheduledExecutor();
private final LoadingCache<String, DataBuilder> cache =
CacheBuilder.newBuilder().maximumSize(10000000)
.removalListener(RemovalListeners.asynchronous(new CustomListener(), executorService))
.build(new CacheLoader<String, DataBuilder>() {
@Override
public DataBuilder load(String key) throws Exception {
// what I should do here?
// return
}
});
// this will be called from multiple threads to populate the cache
public void addToCache(String key, DataBuilder dataBuilder) {
// what I should do here?
//cache.get(key).
}
내 addToCache
방법
cache
을 채우기 위해 여러 스레드에서 호출됩니다. 캐시를 채우기 위해
addToCache
메서드 내에서해야 할 일을 혼동하고 또한 내
load
메서드는 어떻게 생겼습니까?
여기 DataBuilder
이 제 작성자 패턴입니다.
우리가 어떻게 당신이 당신의 데이터를로드하는 방법을 알아야합니까? 그리고 왜 게으른로드를 허용하지 않고 캐시를 미리 채우고 싶습니까? – shmosel
'addToCache' 메소드에서'DataBuilder'를 사용할 수있게되어서 제 질문이 생겼습니다. 어떻게 그것을 사용하여 LoadingCache를 채울 수 있습니까? 그게 내 혼란이야. –