concurrenthashmap相关内容

独占锁定ConcurrentHashMap

我知道不可能锁定一个ConcurrentHashMap进行独占访问。 然而,我找不到为什么。 这是因为“段”的构成CHM不是由api暴露? 假定如果是,客户端代码可以执行“手动”锁定? 干杯 解决方案 我知道不可能锁定一个ConcurrentHashMap进行独占访问。但是,我找不到原因。 简单 - 因为它不是真的。每个线程的单实例如何?如何同步方法或同步块?信号 ..
发布时间:2016-12-26 21:11:25 Java开发

Java中的并发缓存

我正在寻找对Brian Goetz的并发书中的以下代码的解释。 public V compute(final A arg) throws InterruptedException { while(true){ Future f = cache.get(arg); if(f == null){ Callable eval = new Callable(){ ..
发布时间:2016-12-26 21:03:36 Java开发

ConcurrentHashmap在JDK8代码解释

我一直在试图理解JDK8中的ConcurrentHashMap函数,与之相反的是JDK7(除了源代码,可以找到很好的解释很好的一些很好的人,如理查德 http://www.burnison.ca/articles/the-concurrency-of-concurrenthashmap )。它看起来像在JDK8中有相当多的改变 - 例如。没有更多的'段'本身,但不知何故我有一种感觉,这些更改意味着 ..
发布时间:2016-12-26 19:36:24 其他开发

这个代码是线程安全的吗?

我想要处理一系列客户请求。每个请求都有其特殊类型。首先,我需要初始化该类型的一些数据,之后,我可以开始处理请求。当客户端类型第一次来时,我只是初始化相应的数据。之后,使用该数据处理该类型的所有以下请求。 我需要以线程安全的方式这样做。 这是我写的代码。它是线程安全的吗? public class Test { private static Map ..
发布时间:2016-12-26 19:21:37 Java开发

ConcurrentHashMap jdk 8使用TreeNodes而不是List ..为什么?

您好,我知道 ConcurrentHashMap before jdk 8 之前的工作方式。 我也理解代码,它是相当模块化,不是很难理解。 ConcurrentHashMap jdk 8的代码已经从以前的实现中改变了很多。 由于问题分类过宽,我会尝试非常具体。 CHMv8使用TreeBin 因此我的问题是什么是使用TreeBin在LinkedList的主要优点。 http:/ ..

将对象重新放入ConcurrentHashMap中导致“发生在之前”内存关系?

我正在使用具有ConcurrentHashMap形式的对象存储的现有代码。在地图中存储可变对象,由多个线程使用。没有两个线程试图通过设计一次修改对象。我关心的是线程之间的修改的可见性。 目前对象的代码在“setters”(由对象本身保护)同步。 “getter”没有同步,成员也不挥发。这对我来说意味着不能保证可见性。然而,当对象被修改时,它被重新回到映射中( put()方法被再次调用,同一个 ..
发布时间:2016-12-26 18:33:06 Java开发

使用java ConcurrentHashMap实现缓存

我想在web java应用程序中实现对重量级对象的简单缓存。但我无法弄清楚如何正确地做。 我缺少一些东西或ConcurrentHashMap方法(putIfAbsent,...)是不够的,需要额外的同步? 有没有更好的简单API(在内存存储,没有外部配置)? P。 解决方案 如果可以安全地暂时拥有多个要缓存的内容的实例,如下所示执行“无锁”高速缓存: public ..
发布时间:2016-12-26 18:05:20 Java开发

ConcurrentHashMap返回一个弱一致的迭代器,为什么我们应该使用它?

我正在读“Java Concurrecny”这本书。在第85页第5.2.1节中,它讨论了ConcurrentHashMap及其优点。然而,在一部分中,书籍声称ConcurrentHashMap返回的迭代器的弱一致性 。这个 意味着这个迭代器可以容忍并发修改, 遍历元素,因为它们在构造迭代器时存在,并且 可以(但不能保证)反映对集合 的修改构造迭代器。 为什么我理解并发程序中的整 ..

ConcurrentHashMap与弱键和身份哈希?

如何在Java中使用弱键和身份哈希获取 ConcurrentHashMap ?我认为谷歌收藏可以给这样的事情,但我可以从标准库中得到它吗? 解决方案 我认为Google Guava Collections可以提供这样的功能,但是我可以从标准库中获得它吗? 简单的答案是否定的。Java SE没有实现这个特定的组合。 您可以实例化一个 java.util.concurrent. ..
发布时间:2016-12-26 16:21:19 Java开发

ConcurrentHashMap,在JDK8中改进的并发功能

任何并发专家可以在ConcurrentHashMap中解释,哪些并发功能比以前的JDK更好。 解决方案 code> ConcurrentHashMap 已被完全重写。在Java 8之前,每个 ConcurrentHashMap 有一个“并发级别”,在构建时已经固定。出于兼容性原因,仍然存在构造函数接受这样的级别,虽然不是以原来的方式使用它。地图被分割成许多段,因为它的并发级别,每个都有自己的 ..
发布时间:2016-12-26 16:18:48 其他开发

需要简单的解释如何“锁定条纹”使用ConcurrentHashMap

根据Java Concurrency in Practice,第11.4.3章说: 锁分裂有时可以扩展到分区 锁定一组变量的独立对象,在这种情况下 它被称为锁定条带化。例如, 的实现ConcurrentHashMap使用16个锁的数组,每个锁保护散列桶的1/16 ; bucket N被N mod 16保护。 我仍然有问题来理解和可视化锁条带和桶机制。 有人可以用很好的理解词解 ..

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

我想从网路应用程式的各个地方收集一些指标。为了保持简单,所有这些都将是计数器,因此唯一的修改操作是将它们递增1. 增量将是并发的和经常的。读取(转储统计信息)是一个罕见的操作。 我想使用ConcurrentHashMap。问题是如何正确增量计数器。由于地图没有“增量”操作,我需要先读取当前值,增加它,而不是在地图中放置新值。没有更多的代码,这不是一个原子操作。 是否可以实现这个没 ..
发布时间:2016-12-26 16:03:00 Java开发

ConcurrentHashMap是否有可能“死锁”?

我们遇到了一个奇怪的问题, ConcurrentHashMap ,其中两个线程似乎正在调用 put()然后在方法 Unsafe.park()中永久等待。从外部,它看起来像 ConcurrentHashMap 中的死锁。 我们只看到这种情况发生了一次。 任何人都可以想到可能导致这些症状的任何事情。 EDIT 相关线程的线程转储在这里: “[redacted] Threa ..
发布时间:2016-12-26 15:23:22 Java开发