gpt4 book ai didi

java - Java中的ConcurrentHashMap和Hashtable

转载 作者:IT老高 更新时间:2023-10-28 20:21:37 25 4
gpt4 key购买 nike

Java 中的 ConcurrentHashMap 和 Hashtable 有什么区别?

哪个对线程应用程序更有效?

最佳答案

ConcurrentHashMap and Hashtable locking mechanism

  • Hashtable属于Collection框架; ConcurrentHashMap属于 Executor 框架。
  • Hashtable对整个数据使用单锁ConcurrentHashMap在段级别使用多重锁(默认为 16)而不是对象级别,即整个 Map .
  • ConcurrentHashMap锁定仅适用于更新。在检索的情况下,它允许完全并发,检索反射(reflect)最近完成的更新操作的结果。因此,在使用锁完成写入时,读取可能会非常快。
  • ConcurrentHashMap不抛出 ConcurrentModificationException如果一个线程尝试修改它,而另一个线程正在对其进行迭代并且不允许空值。
  • ConcurrentHashMap返回 Iterator ,它在并发修改时是故障安全的(即迭代器将复制内部数据结构)。
  • ConcurrentHashMap使用数据库分片逻辑(Segment<K, V>[] segments)被称为并发级别,即将数据划分为分片(段),然后在每个分片(段)上加锁,而不是为整个分片加一个锁数据(Map)。默认值为 16。

要从技术上更深入地了解 ConcurrentHashMap,请查看 link

以下类比仅帮助您理解概念(而非逻辑)

  • 假设 HashtableConcurrentHashMap是两种类型的住宅。
  • Hashtable锁住家的大门。
  • ConcurrentHashMap锁定特定房间的门而不是大门。

Which is more efficient for threaded applications?

ConcurrentHashMap对于线程应用程序更有效。

关于java - Java中的ConcurrentHashMap和Hashtable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12646404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com