优艾设计网

下面这段代码存在并发陷阱????

曾宪杰的《大型网站系统与Java中间件实践》第一章第1.2.2.3小节给出以下代码示例:

使用HashMap数据被进行统计;

public class TestClass 优艾设计网_设计客{ private HashMap<String, Integer> map = new HashMap<>();public synchronized void add(String key) { Integer value = map.get(key); if(value == null) { map.put(key, 1); } else { map.put(key, value + 1); } }}

使用ConcurrentHashMap保存数据并进行统计;

public class TestClass { private ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();public void add(String key) { Integer value = map.get(key); if(value == null) { map.put(key, 1); } else { map.put(key, value + 1); } }}

使用HashMap时,对add方法加锁,此时该方法是线程安全的,为何换为ConcurrentHashMap之后,原书中说存在并发陷阱???


优艾设计网_PS论坛zzw2888 15小时前

为何换为ConcurrentHashMap之后,还要对add方法进行加锁???


fkylily 15小时前

优艾设计网_设计百科

没加锁啊。


0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜