问题标签 [concurrenthashmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9092 浏览

java - ConcurrentHashMap.put VS ConcurrentHashMap.replace

从 Javadoc 我知道ConcurrentHashMap.replace是原子的,但是呢ConcurrentHashMap.put?我看到它们在源代码中的实现方式不同,但我无法弄清楚它们的区别。任何大师就如何使用这两种方法提供一些指导?

0 投票
2 回答
406 浏览

java - Java 控制器中的 HashMap 或 ConcurrentHashMap?

如此处所述:Java 中的 ConcurrentHashMap?Java 的并发 hashmap 是线程安全的。Java 控制器用于 Web 请求,可以同时从 Web 调用。

我的问题是:我应该在 Java 中使用并发哈希映射而不是哈希映射吗?

0 投票
1 回答
676 浏览

java - 如何将泛型与异构映射一起使用?

我有一个实用方法可以帮助ConcurrentMap.putIfAbsent这样使用:

现在我要处理这样一个异构的地图:

以及向其添加处理程序的方法:

到目前为止一切顺利,但是当我尝试处理课程时问题就来了,例如:

但是,此代码无法编译:

如果我使用handler.handle((Class) c),代码会编译,但我会收到未经检查的警告。虽然我可以添加@SuppressWarnings("unchecked")注释,但如果没有更好的方法,这将是最后的选择。

对这个问题有任何想法吗?

0 投票
3 回答
679 浏览

java - Hashtable over ConcurrentHashMap的具体用法

ConcurrentHashMap在 1.5 中作为 javajava.util.concurrent包的一部分引入。在此之前,拥有threadsafe地图的唯一方法是使用HashTableor Collections.synchronizedMap(Map)

对于所有实际目的(多线程环境),ConcurrentHashMap足以满足需要,除了线程需要映射的统一视图的一种情况。

我的问题是,除了拥有地图的统一视图之外,还有其他情况ConcurrentHashMap不是一种选择吗?

0 投票
1 回答
347 浏览

java - 线程 objectoutputstream objectinputstream 阻塞不读取

我的代码有问题;看起来相当简单的对象写入和读取操作,似乎永远不会触发它的辅助操作。远程对等点上的内部类线程ConcurrentHashMap通过 OOS 发送一个。

当它到达时 - 它确实,好的 - 接收代码继续,在一个布尔确定的循环中,在 OIS 上侦听该 CCHM 的更新。这些更新来自发送原始 CCHM 的同级(每个接收对等方有一个服务同级)。这些ObjectOutputStreams兄弟姐妹的使用取自兄弟姐妹的可见HashMap。兄弟姐妹们并不关心他们是发送给该组的新成员,还是发送给现有成员。对等点是新的还是现有的差异仅在接收对等端知道,原始 CCHM 被接收和使用,然后代码继续等待同一 OIS 上的更新。加入的新对等点将其详细信息添加到远程Hashtable,因此每次发送给所有对等点(新的,加上现有的 n 个),要发送的 CCHM 都会大一个元素。

但是现有的对等体没有收到更新的 CCHM。我没有用调用填充我的代码System.out.println()或粗暴地停止它,而是我可能忽略了哪些陷阱来陷入这种混乱?

0 投票
2 回答
258 浏览

java - 使用并发哈希图

我想知道是否可以访问在以下代码中迭代 hashmap 后获得的值(我知道它们存储在 map 中但想在循环外使用它们)。键和对应的值在循环内迭代。并发哈希图可以帮助我获取值并在循环外使用它们。

谢谢你。

0 投票
3 回答
4215 浏览

java - ConcurrentHashMap 与基于 ReentrantReadWriteLock 的自定义地图重新加载

爪哇大师,

目前我们有一个经常HashMap<String,SomeApplicationObject>读取和偶尔修改的文件,我们遇到了在修改/重新加载期间,读取操作返回的问题,null这是不可接受的。

为了解决这个问题,我有以下选项:

A. 使用ConcurrentHashMap

这看起来像是第一个选择,但我们正在谈论的操作是reload()- 意味着clear()后跟replaceAll()。因此,如果Map阅读 postclear()和 prereplaceAll()它返回 null 这是不可取的。即使我synchronize这并不能解决问题。

B. 基于 ReentrantReadWriteLock创建另一个实现

我将在操作Write Lock前创建获取reload()。这似乎更合适,但我觉得必须有一些可用的东西,我不需要重新发明轮子。

最好的出路是什么?

编辑是否已经有任何具有此类功能的收藏?

0 投票
4 回答
166 浏览

java - HashMap使用方式的设计实现

在 GUI 中显示帐户时,我需要显示主帐户(用于辅助帐户)每个主帐户可以有多个辅助帐户。

我正在尝试将主要到次要帐户信息保存在 HashMap 中。因为,这需要稍后检索。

在保存的同时,我还需要保存二级账户指令。所以,我需要保存两个带有键的对象作为主帐户。

我为帐户和指令对象覆盖了等于和哈希码。

我正在尝试使用主帐户哈希码作为键和值作为对象列表 [2]

-- 初始化

-- 价值观

我想知道这是否正确以及是否有更好的方法。你能建议吗?

0 投票
8 回答
343 浏览

java - 这段代码是线程安全的吗?

我想处理客户端请求流。每个请求都有其特殊类型。首先我需要为该类型初始化一些数据,然后我可以开始处理请求。当客户端类型第一次来的时候,我只是初始化了相应的数据。在此之后,使用该数据处理该类型的所有以下请求。

我需要以线程安全的方式执行此操作。

这是我写的代码。它是线程安全的吗?

一方面,ConcurrentHashMap 不能为同一个 A 生成两次 map.put(A,B) == null。另一方面,赋值和比较操作不是线程安全的。

那么这段代码可以吗?如果没有,我该如何解决?

更新:我接受了 Martin Serrano 的回答,因为他的代码是线程安全的,并且不容易出现双重初始化问题。但我想指出,我的版本没有发现任何问题,作为答案发布在下面,而且我的版本不需要同步。

0 投票
1 回答
283 浏览

java - Jetty 中的共享 HashMap

我目前正在使用带有嵌入式 Jetty 的 Jersey 构建一个简单的 REST 接口。

在我的资源@GET, @PUT, @DELETE中,我定义了所有从哈希图中获取/放置/删除对象的方法。

目前我在我的资源类中将其定义HashMap为静态ConcurrentHashMap的,到目前为止效果很好。

但是,我计划让HashMap潜在的其他资源和 servlet 可以访问。
因此希望将它添加到一些更广泛的应用程序上下文中。
但不确定,如何最好地做到这一点?
理想情况下以编程方式。
(我已经看到 jetty.webapp 中有一个 WebAppContext,但不确定这是否是要走的路)。