私は、複数のスレッドからデータ構造にエントリを移入し、特定のサイズに達した後に古いレコードを削除したいというユースケースを持っています。そこで私は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にデータを挿入するにはどうしたらいいですか?それは私の混乱です。 –