concurrenthashmap相关内容

计算catch块中发生的异常数

我试图在 ConcurrentHashMap 中收集所有发生的异常计数和异常名称,以便使我知道该异常发生了多少次. 所以在我的catch块中,我有一个映射,该映射将继续添加异常的名称,并且总计数出现. 下面是我的代码,出于测试目的,我已对其进行了修改,每次都始终抛出SQL异常,以便我可以看到异常计数是否正确. 某些情况下- 1)如果我将线程数选择为 10 ,将任务数选择为 ..
发布时间:2021-05-18 21:11:29 Java开发

Java:如何获取ConcurrentHashMap的静态快照?

Java文档表示,映射支持方法values()和entrySet()的返回值.因此,对地图的更改会反映在集合中,反之亦然.我不希望这种情况发生在我的静态副本上.本质上,我希望在DS上完成许多并发操作.但是对于某些情况,我想遍历其静态快照.我想遍历静态快照,因为我假设与同时更新的版本相比,遍历静态快照会更快. 解决方案 简单地制作一份副本,新的HashMap将与原始副本无关. Set ..
发布时间:2021-02-10 18:31:04 Java开发

ConcurrentHashMap有什么缺点吗?

我需要一个可以从多个线程访问的HashMap. 有两个简单的选项,使用普通的HashMap并对其进行同步,或者使用ConcurrentHashMap. 由于ConcurrentHashMap不会阻止读取操作,因此它似乎更适合我的需求(几乎只进行读取,几乎从不更新). 另一方面,我希望并发性非常低,因此应该没有阻塞(只是管理锁的成本). 如果有所不同的话,地图也将非常小(少于10个 ..

Scala:如何测试可变表的并发性

在Scala中,并发和非并发Set的类型完全相同: import collection.JavaConverters._ // Scala中的常规Set,而不是并发。 val regularSet:mutable.Set [Int] = mutable.Set [Int]() //并发集合。它具有与常规集相同的类型,但是在下面,它实际上是并发的。我认为,这是Scala集合 ..
发布时间:2020-10-07 21:28:10 Java开发

ConcurrentHashMap的弱一致性迭代器

Java并发实践中提到: ConcurrentHashMap 与故障快速相比, 的一致性较弱。弱一致性迭代器可以容忍 的并发修改,遍历 迭代器构造时存在的元素,并且可能(但不保证)在构造迭代器后反映对集合的修改。 如何在并行环境中使迭代器弱一致性或故障安全性有帮助,因为 ConcurrentHashMap 的静止状态将被修改。唯一的事情是它不会抛出 ConcurrentModif ..
发布时间:2020-10-07 21:09:20 Java开发

ConcurrentHashmap同时进行写和获取操作

我对ConcurrentHashMaps有疑问。可以说我有2个线程。 线程A尝试从共享的ConcurrentHashMap获取对象。 线程B清除共享映射。 如果线程A和线程B同时访问共享资源,会发生什么情况。我在文档和网络上进行了搜索,找不到明确的答案,也尝试自己做,但无济于事。 解决方案 ConcurrentHashMap根据并发级别分为不同的段。因此,不同的线程可以在Java中同 ..
发布时间:2020-10-07 21:03:57 Java开发

为什么从ConcurrentHashMap中删除第一个条目不会立即反映在迭代器中,而是删除第二个或后续条目呢?

我创建了一个iterator(),然后在进行迭代之前从映射中删除了第一个条目。我总是得到迭代器返回的第一项。但是,当我删除第二个或以后的条目时,当前的迭代器不会返回该条目。 从地图中删除第一个条目的示例: Map m1 =新的ConcurrentHashMap(); m1.put(4,1); m1.put(5,2); m1.put( ..
发布时间:2020-10-05 06:01:40 Java开发

线程安全队列的映射

我想实现线程安全的队列映射. 我打算从一个空的地图开始.如果键不存在,我想用一个新的队列创建一个新的Map条目.如果密钥确实存在,我想添加到队列中.我建议的实现如下: import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLin ..
发布时间:2020-05-14 01:18:07 Java开发

固定大小的并发地图

我需要一张具有以下要求的地图: 它应该是高度并发的.多个线程可以同时调用put(),get()和remove()方法. 它应该是固定大小.如果HashMap的大小达到最大值(例如10000),则不应在地图上添加新条目.不能是LRU高速缓存,其中最早的条目在达到最大大小时会被删除. ConcurrentHashMap可以满足#1.但是,不确定如何在ConcurrentHashMap ..

ConcurrentHashMap中entrySet().removeIf的行为

我想使用ConcurrentHashMap来让一个线程定期从地图中删除某些项目,而让其他线程同时从地图中删除项目. 我正在删除线程中使用map.entrySet().removeIf(lambda).我想知道我可以对其行为做出什么样的假设.我可以看到removeIf方法使用迭代器来遍历映射中的元素,检查给定条件,然后根据需要使用iterator.remove()将其删除. 文档提供了有 ..

ConcurrentHashMap是否可以拥有32个以上的锁

我读到ConcurrentHashMap在多线程中比Hashtable更好,这是因为在存储桶级别具有锁,而不是在映射范围内具有锁.每个地图最多可以锁定32个锁.想知道为什么32个锁,为什么不超过32个锁. 解决方案 如果您正在谈论Java ConcurrentHashMap,则限制为 使用与给定映射相同的映射创建一个新映射.创建的地图的容量是给定地图中映射数的1.5倍或16(以较大者为准 ..
发布时间:2020-05-03 05:59:31 Java开发