并发容器

6.1 skiplist 跳表

跳表是一个可以替换平衡树相对简单的结构.有序的元素分布在多层次的链表上面.每个节点有指向上一个节点和下一节点的引用.通过随机的方式决定元素是否跃升为上升节点.采取的是一种空间换取时间的策略.类似于数据库里面的索引.

(1) 由很多层结构组成,level是通过一定的概率随机产生的。
(2) 每一层都是一个有序的链表,默认是升序,也可以根据创建映射时所提供的Comparator进行排序,具体取决于使用的构造方法。
(3) 最底层(Level 1)的链表包含所有元素。
(4) 如果一个元素出现在Level i 的链表中,则它在Level i 之下的链表也都会出现。
(5) 每个节点包含两个指针,一个指向同一链表中的下一个元素,一个指向下面一层的元

6.2 ConcurrentSkipListMap& ConcurrentSkipListSet

  • ConcurrentSkipListMap底层通过跳表(skipList)实现。类似java.util.TreeMap.
  • ConcurrentSkipListSet底层通过ConcurrentSkipListMap,类似于java.util.TreeSet.

6.3 ConcurrentLinkedQueue

  • 基于链接节点的无界线程安全队列,它采用先进先出的规则对节点进行排序.

6.4 ConcurrentLinkedDeque

  • 基于链接节点的,无界的,线程安全的,双向队列.

6.5 阻塞队列

6.5.1 ArrayBlockingQueue

6.5.2 LinkedBlockingQueue

6.5.3 PriorityBlockingQueue

6.5.4 DelayQueue

6.5.5 SynchronousQueue

6.5.6 ConcurrentLinkedDeque

6.5.7 LinkedTransferQueue

6.6 写时复制容器

6.6.1 CopyOnWriteMap

6.6.1 CopyOnWriteArrayList

6.6.1 CopyOnWriteArraySet

posted on 2019-01-16 18:39  lukelin1989  阅读(138)  评论(0编辑  收藏  举报

导航