List list = Collections.synchronizedList(new ArrayList(...));
synchronized(list){
Iterator itr = list.iterator();
while(itr.hasNex()){
……
}
}
以上是Java中同步集合的使用,同步集合的缺点很明显,就是不高效。
具体看实现我们发现只是用装饰者模式对集合重新用synchronized关键字对访问的方法进行了封装,但是因为都是同一个锁(即同步集合对象本身),就导致了如果很多线程访问不同的这一个同步集合的方法就会同时都被阻塞,这效率就很低了。
我们下一节看看并发包里面提供了怎样的更好的实现。