LoadingCache示例

依赖



com.google.guava
guava
18.0

代码块

代码块语法遵循标准markdown代码,例如:


import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.cache.RemovalListener;
import com.google.common.cache.RemovalNotification;

public class TestLoadingCache {

    private static final String CACHE_KEY_ALL = "all";

    private static LoadingCache<String, List<String>> loadingCache = CacheBuilder.newBuilder()
            .maximumSize(1000)  // 设置最大容量
            .expireAfterWrite(1, TimeUnit.MILLISECONDS) // 设置过期时间
//          .removalListener((RemovalListener<String, List<String>>) notification -> System.out.println(""))
            // 移出缓存时执行的操作
            .removalListener(new RemovalListener<String, List<String>>() {
                @Override
                public void onRemoval(RemovalNotification<String, List<String>> notification) {
                    System.out.println("Remove " + notification.getKey() + " from cache: expried");
                }
            })
            .build(new CacheLoader<String, List<String>>() {

                @Override
                public List<String> load(String key) throws Exception {
                    List<String> list = new ArrayList<String>();
                    list.add("1");
                    list.add("2");
                    list.add("3");
                    System.out.println("get all");
                    return list;
                }

            });

    public static void main(String[] args) {
        List<String> unchecked = loadingCache.getUnchecked(CACHE_KEY_ALL);
        System.out.println(unchecked);
        try {
            Thread.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        unchecked = loadingCache.getUnchecked("all");
        System.out.println(unchecked);

    }

}

运行结果

get all
[1, 2, 3]
Remove all from cache: expried
get all
[1, 2, 3]

猜你喜欢

转载自blog.csdn.net/OnlyLove_longshao/article/details/80800772