AbstractLoadingCache
및 CacheLoader
에 대한 구아바의 API는 "thread-safe"및 "asynchronous"로 가득 찼습니다.LoadingCache로 비동기식 로더를 만드는 방법 <K,V>?
API에서 유감스럽게도 비동기 연기 된 로더를 어떻게 만들 수 있는지 추론 할 수 없습니다.
예를 들어, 그들은
CacheLoader<Key, Graph> loader = new CacheLoader<Key, Graph>() {
public Graph load(Key key) throws AnyException {
return createExpensiveGraph(key);
}
};
LoadingCache<Key, Graph> cache = CacheBuilder.newBuilder().build(loader);
가 지금은 YES, 다음 그래프를 그릴 경우 일부 키 값이 캐시에 포함되어 있는지 확인하려면 샘플을 가지고있다. 그러나 NO이면 스텁을 그리고 로딩을 시작하고 계속 작업하십시오 (GUI). 그런 다음로드가 완료되면 그래프를 그립니다.
가능합니까?
대략적으로 'CacheLoader'는 비동기 _reloading_을 지원합니다. - 값이 이미 계산 된 경우 새로운 결과가 비동기 적으로 계산되는 동안'Cache '가 이전 결과를 계속 반환하도록 할 수 있습니다. 그러나 초기 값로드는 동 기적으로 수행됩니다. –