package org.javacore.colgoogle; import com.google.common.base.Function; import com.google.common.collect.MapMaker; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.TimeUnit; /** * Created by 子木 on 2016/2/20. */ public class MapMakerT0 { public static void main(String[] args) { /** * expiration(3, TimeUnit.SECONDS)设置超时时间为3秒 */ ConcurrentMap<String , String> map = new MapMaker().concurrencyLevel(32).softKeys().weakValues() .expiration(3, TimeUnit.SECONDS).makeComputingMap( /** * 提供当Map里面不包含所get的项,可以自动加入到Map的功能 * 可以将这里的返回值放到对应的key的value中 */ new Function<String, String>() { public String apply(String s) { return "creating " + s + " -> Object"; } } ); map.put("a","testa"); map.put("b","testb"); System.out.println(map.get("a")); System.out.println(map.get("b")); System.out.println(map.get("c")); try { // 4秒后,大于超时时间,缓存失效。 Thread.sleep(4000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(map.get("a")); System.out.println(map.get("b")); System.out.println(map.get("c")); } }