该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-09
最后修改:2011-11-09
dennis_zane 写道 楼主,你对线程的执行根本就没搞清楚。好好再想想。
倒数第二个还会错,是因为你加锁的对象在change的时候被替换了,等于没加锁。 最后一个正确是因为你所有线程的执行都串行了,而且用字符串做加锁也不是推荐的行为。 这位大哥,人真好,居然帮着通读了一下代码,没别的意思,就是字面上得意思,别多想 |
|
返回顶楼 | |
发表时间:2011-11-09
无语了
widgetCacheMap = mm; 你测来测去测的是HashMap,跟ConcurrentHashMap有半毛钱的关系? |
|
返回顶楼 | |
发表时间:2011-11-10
ConcurrentHashMap 的线程安全,仅针对于自己的线程安全 但这个东西,跟你的多线程没有关系。 你这个程序里面,一个是ConcurrentHashMap,另一个是你的thread,也就是说ConcurrentHashMap不能保证你的thread的线程安全。 举例: 线程1 tt.change(); 线程2 int s1 = widgetCacheMap.get(1L).getStatus(); 这样,就出现了线程2读取到的s1为2的情况了。 |
|
返回顶楼 | |