锁定老帖子 主题:sun的程序员也是程序员啊!(续)
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-11
额,你真用心啊,测试部错哦!
|
|
返回顶楼 | |
发表时间:2010-05-11
嗯,之前我也压测压出了问题,现在的U真是很快。
题外话,HashMap不加同步锁,但是也是有好处的。像ConcurrentHashMap就不能放 null进去,很不方便啊。。。所以用Collections.synchroniz..(HashMap)就很好用了,不过序列化的时候麻烦点。 |
|
返回顶楼 | |
发表时间:2010-07-09
楼主真是强大 啊
|
|
返回顶楼 | |
发表时间:2010-12-26
多学习,不要轻易怀疑国外厂家的代码。
当你看到ConcurrentModificationException异常的时候,就知道这个不是普通的HashMap而是ConcurrentHashMap。 ConcurrentHashMap的迭代器(Iterators,Enumerations)是单线程的,并且不会抛出ConcurrentModificationException的。 基于楼主在帖子中控诉Sun没有同步保护,可知楼主对多线程经验很少,我本想帮你找到出错原因,但发现场景中有Ws还有一个什么metro,所以,我只能提示楼主深入测试一下ConcurrentHashMap在什么情况下会抛出ConcurrentModificationException,然后从调用模块的架构上去找原因。 ConcurrentHashMap是个很好用的容器,唯一的不足是迭代不能反映最新的变化。 |
|
返回顶楼 | |
发表时间:2010-12-26
repou 写道 多学习,不要轻易怀疑国外厂家的代码。
当你看到ConcurrentModificationException异常的时候,就知道这个不是普通的HashMap而是ConcurrentHashMap。 ConcurrentHashMap的迭代器(Iterators,Enumerations)是单线程的,并且不会抛出ConcurrentModificationException的。 基于楼主在帖子中控诉Sun没有同步保护,可知楼主对多线程经验很少,我本想帮你找到出错原因,但发现场景中有Ws还有一个什么metro,所以,我只能提示楼主深入测试一下ConcurrentHashMap在什么情况下会抛出ConcurrentModificationException,然后从调用模块的架构上去找原因。 ConcurrentHashMap是个很好用的容器,唯一的不足是迭代不能反映最新的变化。 拜托在指责他人前,先认真看看帖子,先看看别人在说什么。 否则会闹笑话的 我贴出来的exception 和代码你都不看清楚,服了你了。 |
|
返回顶楼 | |
发表时间:2010-12-26
repou 写道 当你看到ConcurrentModificationException异常的时候,就知道这个不是普通的HashMap而是ConcurrentHashMap。 这个是发生问题的地方,你可以去看看jdk的源码,HashMap.java:, line 793 Caused by: java.util.ConcurrentModificationException at java.util.HashMap$HashI**terator.nextEntry(HashMap.java: 793 ) at java.util.HashMap$EntryIterator.next(HashMap.java: 834 ) at java.util.HashMap$EntryIterator.next(HashMap.java: 832 ) metro的代码我也贴出来过,你也可以下载,或者用我贴出来的fisheye工具,链接在帖子里面。 if (reqHeaders == null ){ reqHeaders = new HashMap < String, List < String >> (); } 这个帖子中sun用的是HashMap,出问题的也是HashMap。 |
|
返回顶楼 | |