强大的MapMaker

google的Guava中的MapMaker非常强大,哈哈

public static void main(String[] args) {

/**
* softKeys
* weakValues
* 可以设置key跟value的strong,soft,weak属性。不错不错。
* expiration(3, TimeUnit.SECONDS)设置超时时间为3秒
*
*/
ConcurrentMap<String, String> testMap = new MapMaker().concurrencyLevel(32).softKeys().weakValues().expiration(
3, TimeUnit.SECONDS).makeComputingMap(new Function<String, String>() {
/**
* 这里就是绑定的根据key没找到value的时候触发的function,
* 可以将这里的返回值放到对应的key的value中!
* @param arg0
* @return
*/
@Override
public String apply(String arg0) {
return "timeOut:"+arg0;
}

});

testMap.put("a", (new Date()).toLocaleString());
testMap.put("b", new Date().toLocaleString());

System.out.println(testMap.get("a"));
System.out.println(testMap.get("b"));
System.out.println(testMap.get("c"));

/**
* 这里sleep4秒钟过后,
* 缓存都失效,再get就会根据绑定的function去获得value放在map中了。
*/
try {
Thread.sleep(4000);
testMap.put("a", (new Date()).toLocaleString());
} catch (InterruptedException e) {
e.printStackTrace();
}

/**
* 看看这里的再输出,是不是就是新的值了!~
*/

System.out.println(testMap.get("a"));
System.out.println(testMap.get("b"));
System.out.println(testMap.get("c"));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值