guavas CacheBuilder
を使用したいと思いますが、これをどのように実装するかの明示的な例は見つかりません。guava CacheBuilderの使い方は?
ドキュメントは、次のコードを述べる:
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
.maximumSize(1000)
.build(
new CacheLoader<Key, Graph>() {
public Graph load(Key key) throws AnyException {
return createExpensiveGraph(key);
}
});
質問:このcreateExpensiveGraph(key)
方法は何ですか?これはHashMap<Key, Value>
マッピングを返すメソッドですか? key
の値はどうすればよいですか?
この方法でList<String>
を返すこともできますか?key
の値を使用する必要はありませんか?
Graph get(Key key) {
Graph result = get(key);
if(null == result) {
result = createNewGraph(key);
put(key, result);
}
return result;
}
プラスあなたは、マルチスレッド環境でこのコードを使用するときに持っている通常の同期の問題:キャッシュの
CacheLoaderのAPIを参照し、メソッドを使用する理由を明確に示すメソッドをロードしますか? http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/cache/CacheLoader.html#load(K) createExpensiveGraphは、代わりにGraphオブジェクトを返すため、hashMapを返しません。 –
それはあなたが結果をキャッシュしようとしている機能です。 –