并发容器
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) 编辑 收藏 举报