concurrenthashmap相关内容

并发散列映射中值的原子更新-如何?

任务是跟踪一些正在运行的进程。将该信息保存在内存中很好,因此我使用并发散列映射来存储该数据: ConcurrentHashMap RUNNING_PROCESSES = new ConcurrentHashMap(); 将新对象安全地放置到映射中是很好的,问题是这些进程的状态会发生变化,所以我必须不时地更新ProcessMetaData。 ..
发布时间:2022-04-17 20:10:17 Java开发

使用 JDK 8 编译但针对 JRE 7 的 ConcurrentHashMap 崩溃应用程序

我今天遇到了一个非常意外的错误,虽然我能够找到解决整个问题的方法,但我不确定我是否完全理解它为什么会这样做. 我正在使用的代码最初是使用 JDK 7 环境编写的,当然目标是 JRE 7.在代码中,我使用的是 ConcurrentHashMap 并且需要遍历映射中的键.为此,我使用了 map.keySet(),根据 JavaDocs 应该返回一个 Set.这一直很好,直到我们的构建环境切 ..
发布时间:2022-01-24 11:52:28 Java开发

ConcurrentHashMap 中的分割

我是 Java 世界的新手,我在探索 ConcurrentHashMap API 时发现了这一点: static final int DEFAULT_INITIAL_CAPACITY = 16;静态最终浮点 DEFAULT_LOAD_FACTOR = 0.75F;静态最终 int DEFAULT_CONCURRENCY_LEVEL = 16;静态最终 int MAXIMUM_CAPACITY = ..
发布时间:2022-01-08 14:35:34 Java开发

ConcurrentHashMap的Segment和HashMap的bucket在理论上有什么区别?

我了解在HashMap中,条目(Key,Value)是根据hash(Key.hashCode)放在桶中的-->表示桶位置的索引.如果条目已经放置在该位置,则会创建一个链表,并且新条目(如果它具有不同的键 --> 通过 equals() 方法)放置在链表的开头. 我能否将这个概念与 ConcurrentHashMap 的概念相关联,但不是 Buckets,而是有各个线程在其上具有锁的 Segm ..
发布时间:2022-01-08 14:30:21 Java开发

gcc std::unordered_map 实现速度慢吗?如果是这样 - 为什么?

我们正在用 C++ 开发高性能的关键软件.在那里我们需要一个并发哈希映射并实现一个.所以我们写了一个基准来计算,我们的并发哈希映射比 std::unordered_map 慢多少. 但是,std::unordered_map 似乎非常慢......所以这是我们的微基准(对于并发映射,我们生成了一个新线程以确保锁定不会得到优化请注意,我从不插入 0,因为我还使用 google::dense_h ..
发布时间:2022-01-07 11:24:08 C/C++开发

ConcurrentHashMap 是否有可能“死锁"?

我们在使用 ConcurrentHashMap 时遇到了一个奇怪的问题,其中两个线程似乎在调用 put(),然后在方法 Unsafe 中永远等待.公园().从外面看,ConcurrentHashMap内部就像一个死锁. 到目前为止,我们只见过这种情况发生一次. 谁能想到可能导致这些症状的任何事情? 编辑:相关线程的线程转储在这里: “[编辑] 线程 2" prio=10 tid ..
发布时间:2021-12-28 23:06:27 Java开发

ConcurrentHashMap,JDK8 中改进的并发特性

有没有并发高手能解释一下ConcurrentHashMap中并发特性和以前的JDK相比有哪些改进 解决方案 好吧,ConcurrentHashMap 已经完全重写.在 Java 8 之前,每个 ConcurrentHashMap 都有一个在构建时固定的“并发级别".出于兼容性原因,还有一个 接受这样一个级别的构造函数 尽管没有以原始方式使用它.映射被分成与它的并发级别一样多的段,每个段都有 ..
发布时间:2021-12-28 23:05:36 其他开发

在使用 ConcurrentMap 的 putIfAbsent 之前,您是否应该检查地图是否包含密钥

我一直在将 Java 的 ConcurrentMap 用于可从多个线程使用的地图.putIfAbsent 是一种很好的方法,并且比使用标准映射操作更容易读/写.我有一些看起来像这样的代码: ConcurrentMap>map = new ConcurrentHashMap>();//...map.putIfAbsent(name, new HashSet());map.get(name).add ..
发布时间:2021-12-28 23:01:26 Java开发

以原子方式递增存储在 ConcurrentHashMap 中的计数器

我想从网络应用程序的各个位置收集一些指标.为简单起见,所有这些都将是计数器,因此唯一的修饰符操作是将它们加 1. 增量将是并发的并且经常发生.读取(转储统计数据)是一种罕见的操作. 我想使用 ConcurrentHashMap.问题是如何正确递增计数器.由于地图没有“增量"操作,我需要先读取当前值,将其增量而不是将新值放入地图中.没有更多代码,这不是原子操作. 是否有可能在没有同 ..
发布时间:2021-12-28 22:54:52 Java开发

为什么 ConcurrentHashMap 防止空键和值?

ConcurrentHashMap 是这样说的: 与Hashtable 类似,但与HashMap 不同的是,此类不允许允许将null 用作键或价值. 我的问题:为什么? 第二个问题:为什么Hashtable 不允许为空? 我使用了很多 HashMap 来存储数据.但是当更改为 ConcurrentHashMap 时,由于 NullPointerExceptions,我遇到了 ..
发布时间:2021-11-25 20:26:29 Java开发

迭代 ConcurrentHashMap 值线程安全吗?

在 ConcurrentHashMap 如下: 检索操作(包括get)一般不会阻塞,所以可能与更新操作(包括put和remove)重叠.检索反映了最近完成的更新操作的结果.对于诸如 putAll 和 clear 之类的聚合操作,并发检索可能仅反映某些条目的插入或删除.类似地,迭代器和枚举返回反映哈希表在迭代器/枚举创建时或创建后的某个时刻的状态的元素.它们不会抛出 ConcurrentMod ..

如何更新 ConcurrentHashMap 线程安全中的值

我需要更新 ConcurrentHashmap 中的值,但我不确定如何安全地执行此线程. Hashmap 是一个 ConcurrentHashMap,我需要获取自定义类的实例,对其执行一些操作,然后将更新的值放回去. 有什么办法可以将这个 get-alter-put 操作与原子操作结合起来吗? 提前致谢 解决方案 您可以使用 ConcurrentHashMaps comp ..
发布时间:2021-09-07 18:38:51 Java开发

Java ConcurrentHashMap 不是线程安全的..呢?

我以前用过 HashMap public Map客户端 = 新 HashMap(); 现在我已经切换到 ConcurrentHashMap 以避免同步块,现在我遇到了问题,我的服务器每秒负载 200-400 个并发客户端,预计会随着时间的推移而增长. 现在看起来像这样 public ConcurrentHashMap客户端 = new ConcurrentHashMap(); 我的 ..