목차

Guava CacheBuilder

GuavaCacheTest.java에서 사용예를 볼 수 있다. 특히 Multiple Cache Loading 이 필요할 경우 getAll 살펴볼 것.

LoadingCache

LoadingCache<Key,Value> loadingCache = CacheBuilder.newBuilder()
  .some settings
  .build(new CacheLoader<Key, Value>() {
    @Override
    public Value load(Key cacheKey) throws Exception {
       ... blah blarh..
       return value;
    }
  });
 
  // 아래와 같이 lambda로 처리 가능하다.
  CacheLoader.from(this::someMethod)

com.google.common.cache.Cache

Cache<Key, Value> cache = CacheBuilder.newBuilder()
    .maximumSize(1000)
    .build(); // look Ma, no CacheLoader
...
try {
  // If the key wasn't in the "easy to compute" group, we need to
  // do things the hard way.
  cache.get(key, new Callable<Value>() {
    @Override
    public Value call() throws AnyException {
      return doThingsTheHardWay(key);
    }
  });
} catch (ExecutionException e) {
  throw new OtherException(e.getCause());
}