« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9688979 建立时间:2004年12月20日 |

| |
[java语言]ConcurrentHashMap也会引起死锁 原创空间, 文章收藏, 软件技术, 电脑与网络
邢红瑞 发表于 2010/5/29 21:40:13 |
ConcurrentHashMap一般情况下是线程安全的,但是也有引起死锁可能。在使用putAll时,频繁出现get数据时死锁。如果使用put或者putIfAbsent没有问题。怀疑putAll执行时会锁住整个map,然后迭代处理,这样处理的效率不是很高。看了看jdk6的实现,putAll已经是一个put的循环,不过这个putAll并不是atomic的。 |
|
回复:ConcurrentHashMap也会引起死锁 原创空间, 文章收藏, 软件技术, 电脑与网络
竹十一(游客)发表评论于2010/6/2 22:42:02 |
ConcurrentHashMap 的putAll,因为是对put 的循环,put是要上锁的,而get 其实在某些情况下调用readValueUnderLock,这个也是要上锁的。两者竞争可能出现死锁。
对ConcurrentHashMap 推荐使用的是putIfAbsent |
|
» 1 »
|