摘要: 在三种并发类型中(Concurrent,CopyOnWrite,queue),今天我去看了下ConcurrentHashMap. 众所周知,我们可以在单线程时使用HashMap提高效率,而多线程时用Hashtable来保证安全。 但是hashtable对于同步的设置不是很人性化。通过分析Hashtable就知道,synchronized是针对整张Hash表的,即每次锁住整张表让线程独占,安全的背后是巨大的浪费,解决方案----ConcurrentHashMap。 ConcurrentHashMap和Hashtable主要区别就是围绕着锁的粒度以及如何锁。左边便是Hashtable的实现方式-- 阅读全文
posted @ 2013-04-07 11:50 clunyes 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 下面举一个发生ConcurrentModificationException异常的例子: 示例1: List list = new ArrayList(); for(Iterator iter = list.iterator(); iter.hasNext();) { Object obj = iter.next(); ... if(***) { list.remove(obj); } } 在执行了remove方法之后,再去执行循环,iter.next()的时候,报java.util.ConcurrentModificationException(当然,如果remove的是最后一条,就不会再去 阅读全文
posted @ 2013-04-07 09:44 clunyes 阅读(158) 评论(0) 推荐(0) 编辑