![](/img/trans.png)
[英]how to use expireAfterAccess with CacheBuilder in guava
[英]How to use guava CacheBuilder?
我想使用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;
}
加上在多線程環境中使用此代碼時常見的同步問題。
番石榴為你做樣板; 你只需要實現createNewGraph()
。 Java的工作方式,這意味着您必須實現一個接口。 在這種情況下,接口是CacheLoader
。
如果您認為整個緩存有點像地圖,那么CacheLoader
是一個回調,無論何時在地圖中找不到密鑰,都會調用該回調。 加載器將獲取密鑰(因為它通常包含創建此密鑰所需的對象的有用信息),並且它將返回get()
將來應返回的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.