import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.RemovalListener;
import com.google.common.cache.RemovalNotification;
public class GuavaCacheBuilderTest {
static Cache<String, String> loadingCache = CacheBuilder.newBuilder()
.maximumSize(20)//设置大小,条目数
.expireAfterWrite(20, TimeUnit.SECONDS)//设置失效时间,创建时间
.expireAfterAccess(20, TimeUnit.HOURS) //设置时效时间,最后一次被访问
.removalListener(new RemovalListener<String, String>() { //移除缓存的监听器
public void onRemoval(RemovalNotification<String, String> notification) {
System.out.println("有缓存数据被移除了");
}})
.build(new CacheLoader<String, String>(){ //通过回调加载缓存
@Override
public String load(String name) throws Exception {
System.out.println("第一次加載緩存》》》》》》》》》》》");
return name + "-" + "iamzhongyong";
}
});
public static void main(String[] args) throws Exception{
final GuavaCacheBuilderTest cache = new GuavaCacheBuilderTest();
for(int i=0;i<10;i++){
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
cache.getNameLoadingCache("bixiao");
loadingCache.invalidate("bixiao");
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();;
}
}
public void getNameLoadingCache(String name) throws Exception{
// System.out.println(cache.get(name));
//cache.invalidateAll();
String rs = loadingCache.get(name, new Callable<String>() {
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
System.out.println("自定義第一次觸發");
return "1234";
}
});
//System.out.println(rs);
}
}