synchronized 自从Java提供了多线程编程,我们经常需要处理这样的情况:在特定的时间,我们需要限制访问,确保只有一个线程访问我们的代码.Java提供了同步关键字synchronized来实现这种访问控制,但是使用synchronized会存在一些问题.第一个问题是,当我们需要调用线程的wait()方法时,我们必须记得去使用while循环.看下面例子,来自guava monitor api上的说明: public class SafeBox<V> { private V value;…
multiset:多重集合,和set唯一的不同是 set 集合中一个值只能出现一次,而multiset多重集合中一个值可以出现多次.一个典型的应用就是统计单词出现次数 举例: public class MultiSetTest { public static void main(String[] args) { Multiset<String> multiset = HashMultiset.create(); multiset.add("hello"); multiset…
在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子: import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import java.util.List; public class Test { public static void main(Str…