簡體   English   中英

如何使用番石榴CacheBuilder?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM