谷歌Guava Cache的使用

最近在項目中看到同事使用了Guava Cache;對這個不是特別瞭解,記錄學習。

1、依賴

<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>20.0</version>
</dependency>

2、創建Cache

final Cache<String,String> cache = CacheBuilder.newBuilder()
            //設置cache的初始大小爲16 
            .initialCapacity(16)
            //設置併發數爲5,即同一時間最多隻能有5個線程往cache執行寫入操作  
            .concurrencyLevel(5)
            //設置cache中的數據在寫入之後的存活時間爲10秒  
            .expireAfterWrite(10, TimeUnit.SECONDS)
            //構建cache實例  
            .build();

3.使用Cache

put方法

cache.put("name","tom");

get方法

直接從chche中取出value數據

cache.getIfPresent("name");
String age = cache.get("name", new Callable<String>() {
            @Override
            public String call() throws Exception {
                Thread.sleep(2*1000);
                return "age";
            }
        });

注意事項:①如果調用get方法時key在cache中存在;直接返回。②如果key不存在;執行call()中代碼;注意;不能返回null

③get方法並不是多線程的;而是執行get方法的調用線程執行call方法。

4.過期和其他參考:

https://blog.csdn.net/qb170217/article/details/81484139

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章