问题标签 [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.
java - ConcurrentHashMap.put VS ConcurrentHashMap.replace
从 Javadoc 我知道ConcurrentHashMap.replace
是原子的,但是呢ConcurrentHashMap.put
?我看到它们在源代码中的实现方式不同,但我无法弄清楚它们的区别。任何大师就如何使用这两种方法提供一些指导?
java - Java 控制器中的 HashMap 或 ConcurrentHashMap?
如此处所述:Java 中的 ConcurrentHashMap?Java 的并发 hashmap 是线程安全的。Java 控制器用于 Web 请求,可以同时从 Web 调用。
我的问题是:我应该在 Java 中使用并发哈希映射而不是哈希映射吗?
java - 如何将泛型与异构映射一起使用?
我有一个实用方法可以帮助ConcurrentMap.putIfAbsent
这样使用:
现在我要处理这样一个异构的地图:
以及向其添加处理程序的方法:
到目前为止一切顺利,但是当我尝试处理课程时问题就来了,例如:
但是,此代码无法编译:
如果我使用handler.handle((Class) c)
,代码会编译,但我会收到未经检查的警告。虽然我可以添加@SuppressWarnings("unchecked")
注释,但如果没有更好的方法,这将是最后的选择。
对这个问题有任何想法吗?
java - Hashtable over ConcurrentHashMap的具体用法
ConcurrentHashMap
在 1.5 中作为 javajava.util.concurrent
包的一部分引入。在此之前,拥有threadsafe
地图的唯一方法是使用HashTable
or Collections.synchronizedMap(Map)
。
对于所有实际目的(多线程环境),ConcurrentHashMap
足以满足需要,除了线程需要映射的统一视图的一种情况。
我的问题是,除了拥有地图的统一视图之外,还有其他情况ConcurrentHashMap
不是一种选择吗?
java - 线程 objectoutputstream objectinputstream 阻塞不读取
我的代码有问题;看起来相当简单的对象写入和读取操作,似乎永远不会触发它的辅助操作。远程对等点上的内部类线程ConcurrentHashMap
通过 OOS 发送一个。
当它到达时 - 它确实,好的 - 接收代码继续,在一个布尔确定的循环中,在 OIS 上侦听该 CCHM 的更新。这些更新来自发送原始 CCHM 的同级(每个接收对等方有一个服务同级)。这些ObjectOutputStreams
兄弟姐妹的使用取自兄弟姐妹的可见HashMap
。兄弟姐妹们并不关心他们是发送给该组的新成员,还是发送给现有成员。对等点是新的还是现有的差异仅在接收对等端知道,原始 CCHM 被接收和使用,然后代码继续等待同一 OIS 上的更新。加入的新对等点将其详细信息添加到远程Hashtable
,因此每次发送给所有对等点(新的,加上现有的 n 个),要发送的 CCHM 都会大一个元素。
但是现有的对等体没有收到更新的 CCHM。我没有用调用填充我的代码System.out.println()
或粗暴地停止它,而是我可能忽略了哪些陷阱来陷入这种混乱?
java - 使用并发哈希图
我想知道是否可以访问在以下代码中迭代 hashmap 后获得的值(我知道它们存储在 map 中但想在循环外使用它们)。键和对应的值在循环内迭代。并发哈希图可以帮助我获取值并在循环外使用它们。
谢谢你。
java - ConcurrentHashMap 与基于 ReentrantReadWriteLock 的自定义地图重新加载
爪哇大师,
目前我们有一个经常HashMap<String,SomeApplicationObject>
被读取和偶尔修改的文件,我们遇到了在修改/重新加载期间,读取操作返回的问题,null
这是不可接受的。
为了解决这个问题,我有以下选项:
A. 使用ConcurrentHashMap
这看起来像是第一个选择,但我们正在谈论的操作是reload()
- 意味着clear()
后跟replaceAll()
。因此,如果Map
阅读 postclear()
和 prereplaceAll()
它返回 null 这是不可取的。即使我synchronize
这并不能解决问题。
B. 基于 ReentrantReadWriteLock创建另一个实现
我将在操作Write Lock
前创建获取reload()
。这似乎更合适,但我觉得必须有一些可用的东西,我不需要重新发明轮子。
最好的出路是什么?
编辑是否已经有任何具有此类功能的收藏?
java - HashMap使用方式的设计实现
在 GUI 中显示帐户时,我需要显示主帐户(用于辅助帐户)每个主帐户可以有多个辅助帐户。
我正在尝试将主要到次要帐户信息保存在 HashMap 中。因为,这需要稍后检索。
在保存的同时,我还需要保存二级账户指令。所以,我需要保存两个带有键的对象作为主帐户。
我为帐户和指令对象覆盖了等于和哈希码。
我正在尝试使用主帐户哈希码作为键和值作为对象列表 [2]
-- 初始化
-- 价值观
我想知道这是否正确以及是否有更好的方法。你能建议吗?
java - 这段代码是线程安全的吗?
我想处理客户端请求流。每个请求都有其特殊类型。首先我需要为该类型初始化一些数据,然后我可以开始处理请求。当客户端类型第一次来的时候,我只是初始化了相应的数据。在此之后,使用该数据处理该类型的所有以下请求。
我需要以线程安全的方式执行此操作。
这是我写的代码。它是线程安全的吗?
一方面,ConcurrentHashMap 不能为同一个 A 生成两次 map.put(A,B) == null。另一方面,赋值和比较操作不是线程安全的。
那么这段代码可以吗?如果没有,我该如何解决?
更新:我接受了 Martin Serrano 的回答,因为他的代码是线程安全的,并且不容易出现双重初始化问题。但我想指出,我的版本没有发现任何问题,作为答案发布在下面,而且我的版本不需要同步。
java - Jetty 中的共享 HashMap
我目前正在使用带有嵌入式 Jetty 的 Jersey 构建一个简单的 REST 接口。
在我的资源@GET, @PUT, @DELETE
中,我定义了所有从哈希图中获取/放置/删除对象的方法。
目前我在我的资源类中将其定义HashMap
为静态ConcurrentHashMap
的,到目前为止效果很好。
但是,我计划让HashMap
潜在的其他资源和 servlet 可以访问。
因此希望将它添加到一些更广泛的应用程序上下文中。
但不确定,如何最好地做到这一点?
理想情况下以编程方式。
(我已经看到 jetty.webapp 中有一个 WebAppContext,但不确定这是否是要走的路)。