依赖
…
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]