关键就是统计次数
技巧:
1、使用guava cache缓存 来计数
2、利用引用变量的特性,减少put,只使用get
如果重新put赋值,缓存的时间会刷新,比如下面例子的b,一共输出了7次,而a只输出了5次
import com.google.common.cache.Cache; public class Test2 { private static Cache<String, TestObj> guavaCache = CacheFactory.cached(5L, null); public static void main(String[] args) { guavaCache.put("a", new TestObj()); guavaCache.put("b", new TestObj()); for (int i = 0; i < 10; i++) { TestObj a = guavaCache.getIfPresent("a"); if (a == null) { System.out.println("a == null"); } else { a.setNum(a.getNum() + 1); System.out.println("a == " + a.getNum()); } TestObj b = guavaCache.getIfPresent("b"); if (b == null) { System.out.println("b == null"); } else { b.setNum(b.getNum() + 1); System.out.println("b == " + b.getNum()); } if (i == 2) { TestObj tmp = new TestObj(); tmp.setNum(1000); guavaCache.put("b", tmp); } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
public class TestObj { private int num = 0; public int getNum() { return num; } public void setNum(int num) { this.num = num; } }
输出内容如下:
a == 1 b == 1 a == 2 b == 2 a == 3 b == 3 a == 4 b == 1001 a == 5 b == 1002 a == null b == 1003 a == null b == 1004 a == null b == null a == null b == null a == null b == null
原创文章,欢迎转载,转载请注明出处!
标签:Java,段时间,次数,guavaCache,num,TestObj,put,null,public From: https://www.cnblogs.com/acm-bingzi/p/java_count_num.html