论坛首页 入门技术论坛

ConcurrentHashMap并不是绝对线程安全的

浏览 5297 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-11-09   最后修改:2011-11-09
dennis_zane 写道
楼主,你对线程的执行根本就没搞清楚。好好再想想。

倒数第二个还会错,是因为你加锁的对象在change的时候被替换了,等于没加锁。
最后一个正确是因为你所有线程的执行都串行了,而且用字符串做加锁也不是推荐的行为。



这位大哥,人真好,居然帮着通读了一下代码,没别的意思,就是字面上得意思,别多想
0 请登录后投票
   发表时间:2011-11-09  
无语了
widgetCacheMap = mm;

你测来测去测的是HashMap,跟ConcurrentHashMap有半毛钱的关系?
0 请登录后投票
   发表时间:2011-11-10  

ConcurrentHashMap 的线程安全,仅针对于自己的线程安全
但这个东西,跟你的多线程没有关系。

你这个程序里面,一个是ConcurrentHashMap,另一个是你的thread,也就是说ConcurrentHashMap不能保证你的thread的线程安全。

举例:
线程1
               tt.change();
线程2
int s1 = widgetCacheMap.get(1L).getStatus(); 
这样,就出现了线程2读取到的s1为2的情况了。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics