ConcurrentSkipListMap实现原理

ConcurrentSkipListMap不同于TreeMap,前者使用SkipList(跳表)实现排序,而后者使用红黑树。相比红黑树,跳表的原理比较容易理解,简单点说就是在有序的链表上使用多级索引来定位元素。下面是简单看看SkipList的...

ConcurrentSkipListMap概念

ConcurrentSkipListMap在JDK并发工具类使用范围不是很广,它是针对某一特殊需求而设计的——支持排序,同时支持搜索目标返回最接近匹配项的导航方法。一般情况下开发者很少会使用到该类,但是如果你有如上的特殊需...

ConcurrentHashMap的Java内存模型

由于 ConcurrentHashMap 是建立在 Java 内存模型基础上的,为了更好的理解 ConcurrentHashMap,让我们首先来了解一下 Java 的内存模型。 Java 语言的内存模型由一些规则组成,这些规则确定线程对内存的访问如何...

ConcurrentHashMap使用场景

ConcurrentHashMap由于其即使在同步的情况下依旧保证高效的读写性能,所以在很多需要使用HashMap的情况都适用,当然单线程情况并不需要使用同步的ConcurrentHashMap。如果无法保证你的HashMap只是在单线程情况下...

ConcurrentHashMap常用方法解读

ConcurrentHashMap实现了Map接口,那么他的核心方法包括我们常用的put(K, V)、get(Object)、remove(Object)、contains(Object)、size(),同时继承自ConcurrentMap让他包含了putIfAbsent(K, V)、remove(Object, Ob...

ConcurrentHashMap结构预览

类定义 1 public class ConcurrentHashMap<K, V> extends AbstractMap<K, V> implements ConcurrentMap<K, V>, Serializable 上面是ConcurrentHashMap类的定义,从Co...

ConcurrentHashMap概念

ConcurrentHashMap允许多个修改操作并发的进行,关键在于使用了锁分离的技术。它使用了多个锁来控制 hash 表不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个...

ConcurrentLinkedQueue使用场景

ConcurrentLinkedQueue适合在对性能要求相对较高,同时对队列的读写存在多个线程同时进行的场景,即如果对队列加锁的成本较高则适合使用无锁的ConcurrentLinkedQueue来替代。下面我们来简单对比下ConcurrentLinke...

ConcurrentLinkedQueue常用方法解读

入队——offer 首先看看入队操作,由于是无阻塞的队列,所以整个入队操作是在无锁模式下进行的,下面来分析下JDK到底是如何实现无锁并保证安全性的。 1 2 3 4 5 6 7 8 9 10 11 12 13 14...

ConcurrentLinkedQueue结构预览

首先看看结构图: 图1:ConcurrentLinkedQueue结构图: 从图中可以看到ConcurrentLinkedQueue中包含两个内部类:Node<E>和Itr。Node<E>用来表示ConcurrentLinkedQueue链表中的一个节点,通过No...